不能使用 '.mode --insert table1' 来从 '.read query.sql' 导入数据

编程语言 2026-07-10

在SQLite命令行中,我可以使用 .read 来运行Query.sql,并生成结果集。我可以使用 .output csv 将结果集导出为一个.csv文件,并将其导入到 TargetTable

我想要将.sql文件的结果集 直接 导入到表中,使用:

.mode insert TargetTable
.read Query.sql

这些命令会生成有效的 INSERT INTO 语句,但 TargetTable 不会更新。TargetTable 如果我把这些语句复制并粘贴到SQLite命令行上(单独执行或分批执行),则会更新,但它不会自动更新。我哪里出错了?

Query.sql:

Select * from TbFiles

TEST.SQLITE:

CREATE TABLE "TbFiles" (
    "FileName"      TEXT NOT NULL UNIQUE,
    "FileSize"     INTEGER
)

CREATE TABLE "TargetTable" (
    "FileName"      TEXT NOT NULL UNIQUE,
    "FileSize"     INTEGER
)

使用sqlite3命令行:

sqlite3 TEST.SQLITE
INSERT INTO TbFiles VALUES('Black',10);
INSERT INTO TbFiles VALUES('Brown',11);
INSERT INTO TbFiles VALUES('Red',1);
INSERT INTO TbFiles VALUES('Bue',2);
INSERT INTO TbFiles VALUES('Green',3);
INSERT INTO TbFiles VALUES('Yellow',4);

请尝试以下操作:

.separator ,
.mode insert TargetTable
.read Query.sql

SQLite返回:

INSERT INTO TargetTable VALUES('Black',10);
INSERT INTO TargetTable VALUES('Brown',11);
INSERT INTO TargetTable VALUES('Red',1);
INSERT INTO TargetTable VALUES('Bue',2);
INSERT INTO TargetTable VALUES('Green',3);
INSERT INTO TargetTable VALUES('Yellow',4);

但不会更新表。

解决方案

我并不完全确定你在尝试做什么,但看起来你的做法有点过于复杂。

“insert”输出模式只是 输出 INSERT语句;它不会执行它们。这在你希望把这些语句复制到另一台计算机并在那里执行它们时很有用。

要在同一数据库的另一张表中插入数据,你可能更好地使用 INSERT INTO ... SELECT ... 的SQL语法。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章