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

前端之家收集整理的这篇文章主要介绍了是否可以在SQLite数据库中一次插入多个行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
MysqL中,您可以插入多行,如下所示:
INSERT INTO 'tablename' ('column1','column2') VALUES
    ('data1','data2'),('data1','data2');

但是,当我尝试做这样的事情,我得到一个错误。是否可以在sqlite数据库中一次插入多个行?这是什么语法?

更新

作为BrianCampbell points out heresqlite 3.7.11及更高版本现在支持原始帖子的更简单的语法。但是,如果希望在旧数据库之间实现最大兼容性,则所示的方法仍然适用。

原答案

如果我有特权,我会bump andy’s reply:你可以在sqlite中插入多行,你只需要不同的语法。为了使它完全清楚,OPs MysqL示例:

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

这可以重写为sqlite:

INSERT INTO 'tablename'
          SELECT 'data1' AS 'column1','data2' AS 'column2'
UNION ALL SELECT 'data1','data2'
UNION ALL SELECT 'data1','data2'

我一直在使用它来“宽边”RoR的大型数据集,这是一个巨大的性能胜利。

关于UNION与UNION ALL的注释

由于几个人评论过,如果你使用UNION ALL(如上所示),所有的行都会被插入,所以在这种情况下,你会得到4行data1,data2。如果省略ALL,则重复的行将被删除(并且操作可能会有点慢)。我们使用UNION ALL,因为它更接近地匹配原始帖子的语义。

在结束

P.S .:请1 andy’s reply,不是我的!他首先提出了解决方案。

猜你在找的Sqlite相关文章