Создание файлов дампа sqlite3 со всеми табличными значениями
Я могу создать файл дампа sqlite3 с
sqlite3 app.db .dump > app_dump.sql
однако, если в этой базе данных есть строка, в которой нет записи, она просто не включается в файл дампа. Это проблема при использовании файла дампа для чтения данных в другую базу данных. Есть ли способ заставить файл дампа иметь все значения, определенные в таблице? Так что, если нет записи, она просто использует пустую строку '' или что-то в этом роде? спасибо карл
2 ответа
Решение
Выход из .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;