sqlite的输出是否在“mode .insert”中正确?

时间:2016-12-19 22:42:15

标签: postgresql sqlite data-munging

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

.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);吗?

这不是一个真正的问题,因为我可以很容易地进行查找/重新修复,但这可能会引入无法预料的问题(比如更改insert语句中的数据)。

1 个答案:

答案 0 :(得分:2)

来自fine SQLite manual

  

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

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