android SQLite数据库insert语句插入多条记录

最近在用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 条评论
发表一条评论

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。