最近在用android sqlite数据库时,有这么一个需求,就是希望通过一条insert语句同时插入多条记录(记录数>>1000)
在网上搜索得知,mysql中提供类似
INSERT INTO TABLE(col1, col2) VALUES(val11, val12), (val21, val22) ;
这样的语句,于是我也试了一下,但在sqlite上出现语法错误。后来才发现,这个语法并非标准sql,所以sqlite不支持。
那怎么办呢?经过一番查找,发现了如下方法:
INSERT INTO TABLE(col1, col2) SELECT val11, val12 UNION ALL SELECT val21, val22 ;
这样的写法是属于复合SQL语句,表示先把两个SELECT的结果集进行无删减的联合,再把联合结果插入到TABLE中。
但我在使用中还是出现了问题:
SQLite error
too many terms in compound SELECT
sqllite能支持的最大联合数量不能多于500个。
In order to limit the size of the stack, there is a limit in number of terms in a compound SELECT. The maximum number of terms is SQLITE_MAX_COMPOUND_SELECT which defaults to 500
到最后也只好放弃将数据塞到数据库中了
0 条评论