PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Конвертирайте SQLITE SQL дъмп файл в POSTGRESQL

Трябва да можете да подадете този дъмп файл направо в 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 може да отнеме известно време, но ще работи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Резултати от групови заявки по месец и година в postgresql

  2. Как използвате променливи в прост PostgreSQL скрипт?

  3. Как да добавите условен уникален индекс към PostgreSQL

  4. Връщане на списък с часови зони, поддържани от PostgreSQL

  5. Добавете седмици към дата в PostgreSQL