目标
我们有一个MEAN堆栈应用程序,它实现了严格的mongoose模式。需要使用源自SQL Server数据库的数据来播种MEAN堆栈应用程序。只要种子数据符合mongoose模式,app就应该按预期运行。
问题
目前,数据传输作业是通过不执行验证的mongo CLI完成的。出现的问题是将Date对象保存为字符串,缺少模式所需的键,缺少整个文档等。开发团队已经失去了几小时的开发时间来调试应用程序并发现这些数据问题。
我们正在寻找的解决方案
我们如何验证数据:
声明
我不是数据传输过程的一部分,因此我没有详细介绍该过程的具体细节。
答案 0 :(得分:1)
这是您可以调用的一般问题"批量导入","提取 - 转换 - 加载(ETL)"或"数据存储迁移&#34 ;,与任何特定技术断开连接。我接近它:
将数据导出为某种便携式格式(例如CSV或JSON)
通过相同的验证逻辑将数据推送到新系统,该逻辑将持续处理新数据。
经常需要稍微修改一下这个逻辑。例如,您的API可能会自动生成正常操作的时间戳,但是对于数据导入,您希望从旧数据源中显式设置它们。更复杂的情况是,当存在需要暂停的模型/实体的约束时,直到所有数据都存在。
通常,您编写导入脚本或系统以生成处理了多少记录,哪些记录失败以及原因的摘要。然后你修复问题,在剩余的记录上运行它。重复,直到你开心。
P.S。对导入脚本进行版本控制是一个好主意。
答案 1 :(得分:0)
导出到csv并使用node编写一个小脚本。这将解决你的问题。您可以使用 fast-csv npm