我应该如何通过nodejs将大量数据导入mysql?

s4chpxco  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(393)

我正在构建一个自定义导入工具,并想知道导入大量数据的最佳实践是什么。我有下面的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。

xdnvmnnf

xdnvmnnf1#

这里的一个选项是在列上添加唯一索引,这些列将表中的记录定义为重复记录,如下所示:

CREATE UNIQUE INDEX your_idx ON yourTable(product_uid, sale_date);

这样做的最终结果是,一个insert试图添加一个新记录,其中 product_uid / sale_date 表中已经存在的组合将在数据库级别失败。当然,您需要一些node.js代码来处理这个问题,但这应该不是很困难。

相关问题