Ви повинні мати можливість подати цей файл дампа прямо в psql:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
Якщо ви хочете, щоб idстовпець "автоматично збільшувався", змініть його тип з "int" на "serial" у рядку створення таблиці. Потім PostgreSQL приєднає послідовність до цього стовпця, так що ВСТАВКАМ із ідентифікаторами NULL буде автоматично присвоєно наступне доступне значення. PostgreSQL також не розпізнає AUTOINCREMENTкоманди, тому їх потрібно видалити.
Ви також хочете перевірити наявність datetimeстовпців у схемі SQLite і змінити їх на timestampPostgreSQL (спасибі Clay за те, що це вказав).
Якщо у вас є логічні значення у вашому SQLite, тоді ви можете перетворити 1і та 0і 1::booleanта 0::boolean(відповідно), або ви можете змінити логічний стовпець на ціле число в розділі схеми дампа, а потім виправити їх вручну всередині PostgreSQL після імпорту.
Якщо у вашому SQLite є BLOB, тоді вам потрібно буде налаштувати схему для використання bytea. Ймовірно, вам також доведеться змішати деякі decodeдзвінки . Написати копіюючий копію на вашій улюбленій мові може бути простіше, ніж маніпулювати SQL, якщо у вас багато BLOB-файлів.
Як завжди, якщо у вас є зовнішні ключі, ви, мабуть, захочете вивчити, set constraints all deferredщоб уникнути проблем із упорядкуванням вставки, розмістивши команду всередині пари BEGIN / COMMIT.
Дякую Ніколасу Райлі за примітки щодо логіки, краплі та обмежень.
Якщо у вас є `код, створений деякими клієнтами SQLite3, їх потрібно видалити.
PostGRESQL також не розпізнає unsignedстовпці, можливо, ви захочете скинути це або додати спеціальне обмеження, наприклад, таке:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
Поки SQLite за замовчуванням має значення NULL '', PostgreSQL вимагає, щоб вони були встановлені як NULL.
Синтаксис у файлі дампа SQLite, схоже, здебільшого сумісний з PostgreSQL, тому ви можете виправити кілька речей і подати його psql. Імпорт великої купи даних через SQL INSERT може зайняти деякий час, але це буде працювати.