gpt4 book ai didi

sql - 是否可以在 SQLite 数据库中一次插入多行?

转载 作者:IT王子 更新时间:2023-10-29 06:16:37 26 4
gpt4 key购买 nike

在 MySQL 中,您可以像这样插入多行:

INSERT INTO 'tablename' ('column1', 'column2') VALUES
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2');

但是,当我尝试执行类似操作时出现错误。是否可以在 SQLite 数据库中一次插入多行?这样做的语法是什么?

最佳答案

更新

作为BrianCampbell points out here , SQLite 3.7.11 及以上版本现在支持原帖的更简单语法。但是,如果您希望在遗留数据库之间实现最大兼容性,那么所示方法仍然适用。

原始答案

如果我有特权,我会碰到 river's reply : 你可以在 SQLite 中插入多行,你只需要不同的语法。为清楚起见,OPs MySQL 示例:

INSERT INTO 'tablename' ('column1', 'column2') VALUES
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2');

这可以重铸成 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 高效加载大型数据集。 但是as Jaime Cook points out ,目前尚不清楚这是在单个事务中更快地包装单个 INSERTs:

BEGIN TRANSACTION;
INSERT INTO 'tablename' table VALUES ('data1', 'data2');
INSERT INTO 'tablename' table VALUES ('data3', 'data4');
...
COMMIT;

如果效率是您的目标,您应该首先尝试这个。

关于 UNION 与 UNION ALL 的注释

正如几个人评论的那样,如果您使用 UNION ALL(如上所示),所有行都将被插入,因此在这种情况下,您将得到四行 data1, data2 。如果省略 ALL,则会消除重复的行(而且操作可能会慢一点)。我们正在使用 UNION ALL,因为它更符合原始帖子的语义。

结束

附言:请+1 river's reply , 因为它首先提出了解决方案。

关于sql - 是否可以在 SQLite 数据库中一次插入多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1609637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com