Csv Firefox插件:使用大量数据(约80000行)填充sqlite数据库,而不使用executeSimpleSQL()

Csv Firefox插件:使用大量数据(约80000行)填充sqlite数据库,而不使用executeSimpleSQL(),csv,sqlite,firefox-addon,Csv,Sqlite,Firefox Addon,我试图编写的firefox插件需要一个大数据库 有人建议我不要从“data”目录加载数据库本身(使用插件sdk在我的linux机器上本地开发) 所以我决定从csv文件中获取内容,并将其插入到我创建的数据库中 问题是csv大约有80000行,当我试图传递时,我得到一个错误。executeSimpleSQL()reaaaally-longINSERT语句作为字符串 (“插入到表中” 值(行1VAL1、行1VAL2、行1VAL3), (第2VAL1行、第2VAL2行、第2VAL3行), ... (第8

我试图编写的firefox插件需要一个大数据库

有人建议我不要从“data”目录加载数据库本身(使用插件sdk在我的linux机器上本地开发)

所以我决定从csv文件中获取内容,并将其插入到我创建的数据库中

问题是csv大约有80000行,当我试图传递时,我得到一个错误。
executeSimpleSQL()
reaaaally-long
INSERT
语句作为字符串

(“插入到表中”
值(行1VAL1、行1VAL2、行1VAL3),
(第2VAL1行、第2VAL2行、第2VAL3行),
...
(第80000VAL1行、第80000VAL2行、第80000VAL3行)
我应该异步插入吗?使用事先准备好的报表?
我是否应该考虑另一种方法,直接将数据库加载为SQLite文件? 不能在一个INSERT语句中使用那么多记录; SQLite将数字限制为其内部参数,默认值为500


只需使用多个INSERT语句。

您可能会超过某些sqlite限制

来自sqlite:

SQL语句的最大长度 SQL语句文本中的最大字节数是有限的 到SQLITE_MAX_SQL_LENGTH,默认为1000000。你可以重新定义 此限制应与SQLITE_MAX_长度和 1073741824

如果SQL语句的长度限制为一百万字节,则 显然,您将无法通过插入数百万字节的字符串 将它们作为文本嵌入INSERT语句中。但是你应该 无论如何,不要那样做。对数据使用主机参数。准备简短的 SQL语句如下:

插入tab1值(?,?)

然后使用sqlite3\u bind\u XXXX() 函数将大字符串值绑定到SQL语句。这个 使用绑定可以避免在 字符串,降低SQL注入攻击的风险。它也在运行 速度更快,因为大字符串不需要作为 很多

SQL语句的最大长度可以在运行时降低 使用sqlite3_limit(db、SQLITE_limit_SQL_LENGTH、size)接口