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