我可以生成一个 sqlite3 转储文件
sqlite3 app.db .dump > app_dump.sql
但是,如果该数据库中有一行没有条目,则只是将其省略在转储文件中。使用转储文件将数据读入另一个数据库时,这是一个问题。有没有办法强制转储文件在表中定义所有值?所以如果没有条目,它只使用空字符串''或类似的东西?谢谢卡尔
.dump
的输出始终包含所有表行:
sqlite> create table t(x);
sqlite> insert into t values (null), (0), (''), (x'');
sqlite> select * from t;
0
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE t(x);
INSERT INTO "t" VALUES(NULL);
INSERT INTO "t" VALUES(0);
INSERT INTO "t" VALUES('');
INSERT INTO "t" VALUES(X'');
COMMIT;
是的
或来自 sqlite3 cli:
sqlite> .output app_dump.sql
sqlite> .dump <OPTIONAL table_name>
sqlite> .read app_dump.sql
文件将在您当前的路径中,否则找到它例如C:/sql/app_dump.sql
或./app_dump.sql
如果它重新排列您的列,例如.header on
与数据不匹配,则:
ALTER TABLE table_name
RENAME COLUMN current_name TO new_name;