2

考虑我在 SQLite 数据库中创建的表,CREATE TABLE tbl(x);其中包含以下数据: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);

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

4

1 回答 1

3

来自精美的 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
于 2016-12-19T23:40:29.800 回答