Вы должны иметь возможность загрузить этот файл дампа прямо в psql
:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
Если вы хотите, чтобы id
столбец «увеличивался автоматически», измените его тип с «int» на «serial» в строке создания таблицы. PostgreSQL затем присоединит последовательность к этому столбцу, чтобы вставкам с NULL идентификаторами автоматически присваивалось следующее доступное значение. PostgreSQL также не распознает AUTOINCREMENT
команды, поэтому их необходимо удалить.
Вы также захотите проверить наличие datetime
столбцов в схеме SQLite и изменить их timestamp
на PostgreSQL. (Спасибо Клею за указание на это.)
Если у вас есть логические значения в вашем SQLite, вы можете преобразовать 1
и 0
в 1::boolean
и 0::boolean
(соответственно) или вы можете изменить логический столбец на целое число в разделе схемы дампа, а затем исправить их вручную внутри PostgreSQL после импорта.
Если у вас есть большие двоичные объекты в вашем SQLite, вы захотите настроить схему для использования bytea
. Вероятно, вам также понадобится смешать несколько decode
вызовов . Написание быстрого и грязного копировального аппарата на вашем любимом языке может быть проще, чем переделывать SQL, если вам нужно иметь дело с большим количеством больших двоичных объектов.
Как обычно, если у вас есть внешние ключи, вы, вероятно, захотите изучить, set constraints all deferred
чтобы избежать проблем с порядком вставки, поместив команду в пару BEGIN / COMMIT.
Спасибо Nicolas Riley за заметки о логических значениях, blob и ограничениях.
Если у вас есть `
код, созданный некоторыми клиентами SQLite3, вам необходимо удалить их.
PostGRESQL также не распознает unsigned
столбцы, поэтому вы можете отказаться от него или добавить настраиваемое ограничение, например следующее:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
В то время как SQLite по умолчанию использует нулевые значения ''
, PostgreSQL требует, чтобы они были установлены как NULL
.
Синтаксис файла дампа SQLite в основном совместим с PostgreSQL, поэтому вы можете исправить несколько вещей и скормить их psql
. Импорт большого количества данных через SQL INSERT может занять некоторое время, но это сработает.