SQLite批量插入到多个表
这很好:SQLite批量插入到多个表,sqlite,Sqlite,这很好: insert into Genres (ID, Genre) select 1 AS ID, 'Action' AS Genre union select 2, 'Adventure' insert into Movies_Genres (ID, MovieID, GenreID) select 1 AS ID, 2 AS MovieID, 1 AS GenreID union select 2, 3, 1 …这很好: insert into Genres (ID, G
insert into Genres (ID, Genre)
select 1 AS ID, 'Action' AS Genre
union select 2, 'Adventure'
insert into Movies_Genres (ID, MovieID, GenreID)
select 1 AS ID, 2 AS MovieID, 1 AS GenreID
union select 2, 3, 1
…这很好:
insert into Genres (ID, Genre)
select 1 AS ID, 'Action' AS Genre
union select 2, 'Adventure'
insert into Movies_Genres (ID, MovieID, GenreID)
select 1 AS ID, 2 AS MovieID, 1 AS GenreID
union select 2, 3, 1
…但当我试图结合这两种说法时:
insert into Genres (ID, Genre)
select 1 AS ID, 'Action' AS Genre
union select 2, 'Adventure'
insert into Movies_Genres (ID, MovieID, GenreID)
select 1 AS ID, 2 AS MovieID, 1 AS GenreID
union select 2, 3, 1
…它抛出了一个错误。我还尝试用分号分隔两个表批次,但也出现了一个错误。“分析提供的SQL语句时出错。”和“语法错误”。我有大量的插入要做,所以我需要最大限度地提高性能,我发现这种方法非常健壮和快速:
那么,将针对不同表的一组插入批处理在一起的正确语法是什么呢?一条语句不能插入多个表 只需执行多个语句。
(如果使用单个事务,这将很快。)使用UNION ALL而不是UNION。如何将
INSERT
语句传递到sqlite3?如果您使用的方法需要一条语句,则无法在一次提交中同时包含INSERT
语句。sqlite没有多条语句的批处理分隔符(例如分号)?所有其他数据库平台都支持这一点,所以我认为sqlite也会支持。它支持,但许多语言/库中的驱动程序都不允许它阻止注入攻击;看起来很奇怪,你不能在同一批中向任何表添加任何插入内容。@HerrimanCoder你能告诉我你是如何工作的吗?我想插入2tables@TeeJay这取决于您使用的语言。问一个新问题。