Вы должны иметь возможность загрузить этот файл дампа прямо в 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 может занять некоторое время, но это сработает.