Создание файлов дампа 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;
Другие вопросы по тегам