"mode .insert"中sqlite的输出是否正确?
Is the output of sqlite in "mode .insert" correct?
考虑我在 SQLite 数据库中创建的 table 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);
吗?
这不是真正的问题,因为我可以很容易地执行 find/repalce 来解决这个问题,但这可能会引入不可预见的问题(比如在插入语句中更改数据)。
When specifying insert mode, you have to give an extra argument which is the name of the table to be inserted into. For example:
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 名称,这显然是 table
。你应该说:
.mode insert tbl
考虑我在 SQLite 数据库中创建的 table 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);
吗?
这不是真正的问题,因为我可以很容易地执行 find/repalce 来解决这个问题,但这可能会引入不可预见的问题(比如在插入语句中更改数据)。
When specifying insert mode, you have to give an extra argument which is the name of the table to be inserted into. For example:
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 名称,这显然是 table
。你应该说:
.mode insert tbl