我正在构建一个自定义导入工具,并想知道导入大量数据的最佳实践是什么。我有下面的json数据结构,每次导入30天内至少有500个产品。
"rows": [{
"product_uid": "k110",
"sale_date": "2018-06-06",
"amount": 15
}, {
"product_uid": "k111",
"sale_date": "2018-06-06",
"amount": 22
}, {
"product_uid": "k110",
"sale_date": "2018-06-07",
"amount": 30
}
]
表的架构如下所示:
daily_sales_id - product_uid - sale_date - amount
我使用nodejsmysql在一个连接中执行多个sql语句。它在第一次插入行时效果很好,但在随后的尝试中,它将插入重复的行。我可以在插入之前截断表,但如果用户决定导入增量快照而不是整个记录,则此操作将失败。
虽然我可以执行for循环来检查记录是否存在,并执行更新而不是插入,但是循环15000多个记录并创建15000多个select连接似乎不是一个好主意。
有没有其他方法可以让我保留数据结构并执行更新/插入,而不必遍历15000多条记录?导入csv文件不知道每日\u销售\u id。
1条答案
按热度按时间xdnvmnnf1#
这里的一个选项是在列上添加唯一索引,这些列将表中的记录定义为重复记录,如下所示:
这样做的最终结果是,一个insert试图添加一个新记录,其中
product_uid
/sale_date
表中已经存在的组合将在数据库级别失败。当然,您需要一些node.js代码来处理这个问题,但这应该不是很困难。