首页 > 解决方案 > 是否可以与 node sqlite3 命令一起使用 import txt fil 并改进批量插入?

问题描述

我正在尝试将 csv 文件从节点导入到 sqlite 文件。

我尝试通过 npm package sqlite3 执行以下命令。

 var db = new sqlite3.Database(':memory:');

 db.run('.import "/Users/avito/PhpstormProjects/blog/typescript/src/app/services/workflow_temp.txt"'
        + 'INTO TABLE workflow_1_temp'
        + 'FIELDS TERMINATED BY ","'
        + 'ENCLOSED BY "\'"'
        + 'LINES TERMINATED BY \'\\n\''
        + 'IGNORE 1 ROWS'
        + ')');

我收到了这个错误

Error: SQLITE_ERROR: near ".": syntax error

当我通过命令行尝试这个时,它有效。可以在这个 npm 包中使用 sqlite3 功能吗?

.import 比批量插入更快吗?我想改进批量插入。当我插入 cca 1 000 000~5 秒时。当我创建 .txt 文件然后我通过 sqlite3 .import file.txt 使用导入时可能写得更快吗?

标签: javascriptnode.jssqlite

解决方案


不。“交互式解释器提供了一组元命令”,这意味着 .import 是在 sqlite3 二进制文件中实现的,而不是在 JavaScript 包使用的库中实现的。

请记住,默认情况下,sqlite 使用自动提交模式,这意味着每个语句的事务。如果您每行执行一个插入速度很慢。如果您一次批量插入 1000 行,则可以大大加快速度:

insert into t (c) values (v1), (v2), .... (v1000);

推荐阅读