sql - 如何将数据从 SQL Server 传输到 mongodb(使用 mongoose 模式进行验证)
问题描述
目标
我们有一个实现严格猫鼬模式的 MEAN 堆栈应用程序。MEAN 堆栈应用程序需要使用源自 SQL Server 数据库的数据播种。只要种子数据符合猫鼬模式,应用程序就应该按预期运行。
问题
目前,数据传输作业是通过不执行验证的 mongo CLI 完成的。出现的问题是 Date 对象被保存为字符串、缺少我们的架构所需的键、缺少整个文档等。开发团队已经失去了数小时的开发时间来调试应用程序并发现这些数据问题。
我们正在寻找的解决方案
我们如何验证数据:
- 引发错误
- 失败并停止传输
- 或者给出其他一些数据不干净的指示
免责声明
我不是数据传输过程的一部分,因此我没有关于该过程细节的更多细节。
解决方案
这是您可能称之为“批量导入”、“提取-转换-加载 (ETL)”或“数据存储迁移”的一般问题,与任何特定技术断开连接。我会通过以下方式处理它:
将数据导出为某种可移植格式(例如 CSV 或 JSON)
通过将持续处理新数据的相同验证逻辑将数据推送到新系统中。
通常需要稍微修改一下这个逻辑。例如,您的 API 可能会为正常操作自动生成时间戳,但对于数据导入,您希望从旧数据源显式设置它们。更复杂的情况是当存在跨越模型/实体的约束时需要暂停,直到所有数据都存在。
通常,您编写导入脚本或系统来生成处理了多少记录、哪些记录失败以及原因的摘要。然后你解决问题,在剩余的记录上运行它。重复直到你满意为止。
PS 对导入脚本进行版本控制是个好主意。
推荐阅读
- spring-boot - 为什么我的 @Aspect 无法被我的 SpringBoot 应用程序识别?
- powerbi - 用于查找最后一条记录的 PowerBI DAX
- sql - 如何在 Postgresql 中创建具有固定日期 + 随机时间间隔的复合日期时间
- c# - 在 Unity UWP 应用程序中找不到命名空间“Windows”
- c - 为什么我的野牛不打印变量名?
- pytorch - 在 Colab TPU 上运行 Pytorch 堆叠模型
- php - 将选择文件 + 上传文件按钮更改为自定义图像
- java - 尝试从 Calendar 转换为 Date 然后转换为 sql.Date 时出错
- c++ - 如何在 C++ 中将字符串拆分为更小的字符串
- android - gradle 的 npm 搜索等价物是什么?