PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Konwertuj plik zrzutu SQLITE SQL na POSTGRESQL

Powinieneś być w stanie przesłać ten plik zrzutu bezpośrednio do psql :

/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql

Jeśli chcesz id kolumna na „auto increment”, a następnie zmień jej typ z „int” na „serial” w wierszu tworzenia tabeli. PostgreSQL dołączy następnie sekwencję do tej kolumny, dzięki czemu INSERTom z identyfikatorami NULL zostanie automatycznie przypisana następna dostępna wartość. PostgreSQL również nie rozpoznaje AUTOINCREMENT polecenia, więc należy je usunąć.

Będziesz także chciał sprawdzić datetime kolumny w schemacie SQLite i zmień je na timestamp dla PostgreSQL. (Podziękowania dla Claya za wskazanie tego.)

Jeśli masz wartości logiczne w swoim SQLite, możesz przekonwertować 1 i 0 do 1::boolean i 0::boolean (odpowiednio) lub możesz zmienić kolumnę logiczną na liczbę całkowitą w sekcji schematu zrzutu, a następnie naprawić je ręcznie w PostgreSQL po imporcie.

Jeśli masz BLOB w swoim SQLite, będziesz chciał dostosować schemat, aby używał bytea . Prawdopodobnie będziesz musiał wmieszać trochę decode również dzwoni. Napisanie szybkiej i brudnej kopii w twoim ulubionym języku może być łatwiejsze niż manipulowanie SQL, jeśli masz do czynienia z wieloma BLOBami.

Jak zwykle, jeśli masz klucze obce, prawdopodobnie będziesz chciał zajrzeć do set constraints all deferred aby uniknąć problemów z kolejnością wstawiania, umieść polecenie wewnątrz pary BEGIN/COMMIT.

Podziękowania dla Nicolasa Rileya za uwagi logiczne, blob i ograniczenia.

Jeśli masz ` w kodzie wygenerowanym przez niektórych klientów SQLite3, musisz je usunąć.

PostGRESQL również nie rozpoznaje unsigned kolumn, więc możesz chcieć je usunąć lub dodać niestandardowe ograniczenie, takie jak to:

CREATE TABLE tablename (
    ...
    unsigned_column_name integer CHECK (unsigned_column_name > 0)
);

Podczas gdy SQLite domyślnie wartości null to '' , PostgreSQL wymaga ich ustawienia jako NULL .

Składnia w pliku zrzutu SQLite wydaje się być w większości zgodna z PostgreSQL, więc możesz załatać kilka rzeczy i przesłać ją do psql . Importowanie dużego stosu danych przez SQL INSERT może trochę potrwać, ale zadziała.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyodrębnić rok i miesiąc od daty w PostgreSQL bez użycia funkcji to_char()?

  2. zbuduj dynamiczne zapytanie SQL za pomocą biblioteki psycopg2 python i używając dobrych narzędzi do konwersji

  3. Wyrażenie regularne w klauzuli PostgreSQL LIKE

  4. Nie można połączyć postgreSQL z psycopg2

  5. Czy mogę pisać funkcje PostgreSQL w Ruby on Rails?