【问题标题】:How to transfer data from SQL Server to mongodb (using mongoose schema for validation)如何将数据从 SQL Server 传输到 mongodb(使用 mongoose 模式进行验证)
【发布时间】:2018-11-27 14:58:29
【问题描述】:
目标
我们有一个 MEAN 堆栈应用程序,它实现了严格的猫鼬模式。 MEAN 堆栈应用程序需要使用源自 SQL Server 数据库的数据作为种子。只要种子数据符合 mongoose 架构,应用程序就应该按预期运行。
问题
目前,数据传输工作正在通过不执行验证的 mongo CLI 完成。出现的问题包括 Date 对象被保存为字符串、缺少架构所需的键、缺少整个文档等。开发团队已经浪费了数小时的开发时间来调试应用程序并发现这些数据问题。
我们正在寻找的解决方案
我们如何验证数据:
- 抛出错误
- 传输失败并暂停
- 或给出其他一些数据不干净的指示
免责声明
我不是数据传输过程的一部分,因此我没有关于该过程细节的更多详细信息。
【问题讨论】:
标签:
sql
node.js
mongodb
mongoose
database-migration
【解决方案1】:
这是您可能称之为“批量导入”、“提取-转换-加载 (ETL)”或“数据存储迁移”的一般问题,与任何特定技术断开连接。我会通过以下方式接近它:
将数据导出为某种可移植格式(例如 CSV 或 JSON)
通过将持续处理新数据的相同验证逻辑将数据推送到新系统。
通常需要稍微修改一下该逻辑。例如,您的 API 可能会为正常操作自动生成时间戳,但对于数据导入,您希望从旧数据源显式设置它们。更复杂的情况是当存在跨越模型/实体的约束时需要暂停,直到所有数据都存在。
通常,您编写导入脚本或系统来生成处理了多少记录、哪些记录失败以及原因的摘要。然后你解决问题,在剩余的记录上运行它。重复直到你满意为止。
附:对导入脚本进行版本控制是个好主意。
【解决方案2】:
导出为 csv 并使用 node.js 编写一个小脚本。这将解决您的问题。您可以使用 fast-csv npm