Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite批量插入到多个表_Sqlite - Fatal编程技术网

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这取决于您使用的语言。问一个新问题。