Трябва да можете да подадете този дъмп файл направо в psql
:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
Ако искате id
колона на "auto increment", след което променете нейния тип от "int" на "serial" в реда за създаване на таблица. След това PostgreSQL ще прикачи последователност към тази колона, така че на INSERT с NULL идентификатори автоматично ще бъде присвоена следващата налична стойност. PostgreSQL също няма да разпознае AUTOINCREMENT
команди, така че те трябва да бъдат премахнати.
Вие също ще искате да проверите за datetime
колони в схемата на SQLite и ги променете на timestamp
за PostgreSQL. (Благодаря на Clay, че посочи това.)
Ако имате булеви стойности във вашия SQLite, тогава можете да конвертирате 1
и 0
до 1::boolean
и 0::boolean
(съответно) или можете да промените булевата колона на цяло число в секцията за схема на дъмпа и след това да ги коригирате на ръка в PostgreSQL след импортирането.
Ако имате BLOB във вашия SQLite, тогава ще искате да коригирате схемата, за да използвате bytea
. Вероятно ще трябва да смесите малко decode
също се обажда. Написването на бърза и мръсна копирна машина на любимия ви език може да е по-лесно от манипулирането на SQL, ако имате много BLOB-ове, с които да се справите.
Както обикновено, ако имате външни ключове, вероятно ще искате да разгледате 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 dump файла изглежда е предимно съвместим с PostgreSQL, така че можете да поправите няколко неща и да го подадете на psql
. Импортирането на голяма купчина данни чрез SQL INSERT може да отнеме известно време, но ще работи.