在 MySQL 中,您可以像这样插入多行:
INSERT INTO 'tablename' ('column1', 'column2') VALUES ('data1', 'data2'), ('data1', 'data2'), ('data1', 'data2'), ('data1', 'data2');
但是,当我尝试执行此类操作时出现错误。是否可以在 SQLite 数据库中一次插入多行?这样做的语法是什么?
正如指出的那样, SQLite3.7.11 及更高版本现在支持原始帖子的更简单语法 。但是,如果您希望在旧数据库之间实现最大兼容性,则显示的方法仍然适用。
如果我有特权,你 可以 在 SQLite中插入多行,你只需要 不同的语法 。为了清楚起见,OPs MySQL 示例:
这可以重铸为 SQLite:
INSERT INTO 'tablename' SELECT 'data1' AS 'column1', 'data2' AS 'column2' UNION ALL SELECT 'data1', 'data2' UNION ALL SELECT 'data1', 'data2' UNION ALL SELECT 'data1', 'data2'
我最初使用这种技术来有效地从 Ruby on Rails 加载大型数据集,尚不清楚这是否可以更快地将个人包装INSERTs在单个事务中:
INSERTs
BEGIN TRANSACTION; INSERT INTO 'tablename' table VALUES ('data1', 'data2'); INSERT INTO 'tablename' table VALUES ('data3', 'data4'); ... COMMIT;
如果效率是你的目标,你应该先试试这个。
正如几个人评论的那样,如果你使用UNION ALL(如上所示),所有行都会被插入,所以在这种情况下,你会得到四行data1, data2. 如果省略ALL,则将消除重复的行(并且操作可能会慢一些)。我们使用 UNION ALL 因为它更接近原始帖子的语义。
UNION ALL
data1, data2
ALL