创建包含所有表值的 SQLEt3 转储文件



我可以生成一个 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;

相关内容

  • 没有找到相关文章

最新更新