"mode .insert" sqlite 的输出是否正确?



考虑使用CREATE TABLE tbl(x);中的SQLite数据库中创建的表,该表具有以下数据:INSERT INTO tbl VALUES(1); INSERT INTO tbl VALUES(2);。现在,我希望创建一个我希望将其导入到PostgreSQL的数据的SQL文件,并进行以下操作:

.mode insert
.output "tbl.sql"
.schema tbl
select * from tbl order by x;
.output stdout

,输出为:

CREATE TABLE tbl(x);
INSERT INTO table VALUES(1);
INSERT INTO table VALUES(2);

插入语句的输出不应该为 INSERT INTO tbl VALUES(1); INSERT INTO tbl VALUES(2);

这并不是一个真正的问题,因为我可以轻松地进行查找/重新解决此问题,但这可能会引入不可预见的问题(例如更改插入语句中的数据)。

来自精细SQLITE手册:

指定插入模式时,您必须给出一个额外的参数,该参数是要插入的表的名称。例如:

sqlite> .mode insert new_table
sqlite> select * from tbl1;
INSERT INTO "new_table" VALUES('hello',10);
INSERT INTO "new_table" VALUES('goodbye',20);
sqlite>

这样说.mode insert留下SQLite以使用显然是table的默认表名。你应该说:

.mode insert tbl

最新更新