sql - 如何将数据从SQL Server传输到mongodb(使用mongoose schema进行验证)

标签 sql node.js mongodb mongoose database-migration

目标
我们有一个 MEAN 堆栈应用程序,它实现了严格的 Mongoose 模式。 MEAN 堆栈应用程序需要使用源自 SQL Server 数据库的数据进行播种。只要种子数据符合 Mongoose 架构,应用程序就应该按预期运行。

问题
目前,数据传输作业是通过 mongo CLI 完成的,该 CLI 不执行验证。出现的问题包括日期对象被保存为字符串、缺少架构所需的键、整个文档丢失等。开发团队花费了数小时的开发时间来调试应用程序并发现这些数据问题。

我们正在寻找的解决方案

我们如何验证数据:

  • 抛出错误
  • 传输失败并停止
  • 或者给出一些其他表明数据不干净的指示

免责声明
我没有参与数据传输过程,因此我不知道该过程的具体细节。

最佳答案

这是一个常见问题,您可能称之为“批量导入”、“提取转换加载 (ETL)”或“数据存储迁移”,与任何特定技术无关。我会通过以下方式来实现:

  1. 将数据导出为某种可移植格式(例如 CSV 或 JSON)

  2. 通过持续处理新数据的相同验证逻辑将数据推送到新系统。

通常需要稍微修改一下逻辑。例如,也许您的 API 会自动生成正常操作的时间戳,但对于数据导入,您希望从旧数据源显式设置它们。更复杂的情况是,模型/实体之间存在约束,需要暂停这些约束,直到所有数据都存在。

通常,您编写导入脚本或系统来生成已处理的记录数、哪些记录失败以及原因的摘要。然后修复问题,对剩余的记录运行它。重复直到你满意为止。

附注对导入脚本进行版本控制是个好主意。

关于sql - 如何将数据从SQL Server传输到mongodb(使用mongoose schema进行验证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50914961/

相关文章:

php - 自动完成搜索查询mysql

php - 导出/导入表功能

c# - 如何使用 Blazor Server 对用户进行身份验证

java - Web 应用程序的 SQL Server 数据库隔离级别

javascript - Heroku 中的错误 : ENOENT, stat '/app/public/views/index.html'

javascript - 在哪里存储 JWT Client Credentials Grant

javascript - 无法从node.js加载html页面

javascript - 如何在 Node.js 中使用 MongoDB 的 populate 方法?

mongodb - 如何使用 Ecto 更新嵌入列表中的一个子文档?

mysql - 插入到由 MySQL 后端中的两个表构建的具有一对一关系的 MS Access 查询中?