目标
我们有一个实现严格猫鼬模式的MEAN堆栈应用程序。 MEAN堆栈应用程序需要使用源自SQL Server数据库的数据作为种子。只要种子数据符合猫鼬模式,该应用程序即可正常运行。
问题
当前,数据传输作业是通过不执行验证的mongo CLI完成的。出现的问题包括将Date对象保存为字符串,缺少我们的架构所需的键,缺少整个文档等。开发团队已花费了数小时的开发时间来调试该应用程序并发现这些数据问题。
我们正在寻找的解决方案
我们如何验证数据,以便:
引发错误
失败并暂停传输
或给出其他指示,表明数据不干净
免责声明
我不是数据传输过程的一部分,因此我没有该过程的详细信息。
最佳答案
这是一个普遍的问题,您可能将其称为“批处理导入”,“提取-转换-加载(ETL)”或“数据存储迁移”,并且与任何特定技术都断开了连接。我可以通过以下方法来处理:
将数据导出为某种可移植格式(例如CSV或JSON)
通过相同的验证逻辑将数据推送到新系统中,该逻辑将持续处理新数据。
通常有必要稍微修改一下该逻辑。例如,也许您的API将为正常操作自动生成时间戳,但是对于数据导入,您想从旧数据源中显式设置它们。当存在跨模型/实体的约束需要暂停直到所有数据都存在时,情况将更为复杂。
通常,您编写导入脚本或系统以生成有关处理了多少条记录,哪些记录失败以及原因的摘要。然后,您解决了这些问题,并在其余的记录上运行它。重复直到您感到高兴。
附言对导入脚本进行版本控制是个好主意。
关于sql - 如何将数据从SQL Server传输到mongodb(使用mongoose模式进行验证),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50914961/