sql >> Database teknologi >  >> RDS >> PostgreSQL

Konverter SQLITE SQL dump-fil til POSTGRESQL

Du burde være i stand til at føre den dump-fil direkte ind i psql :

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

Hvis du vil have id kolonne til "automatisk stigning", og skift derefter dens type fra "int" til "seriel" i tabeloprettelseslinjen. PostgreSQL vil derefter vedhæfte en sekvens til den kolonne, så INSERT'er med NULL-id'er automatisk vil blive tildelt den næste tilgængelige værdi. PostgreSQL genkender heller ikke AUTOINCREMENT kommandoer, så disse skal fjernes.

Du vil også gerne tjekke efter datetime kolonner i SQLite-skemaet og ændre dem til timestamp til PostgreSQL. (Tak til Clay for at påpege dette.)

Hvis du har booleaner i din SQLite, kan du konvertere 1 og 0 til 1::boolean og 0::boolean (henholdsvis), eller du kan ændre den booleske kolonne til et heltal i skemasektionen af ​​dumpet og derefter rette dem op i hånden inde i PostgreSQL efter importen.

Hvis du har BLOB'er i din SQLite, vil du gerne justere skemaet til at bruge bytea . Du bliver sandsynligvis nødt til at blande noget decode ind opkald også. At skrive en quick'n'dirty kopimaskine på dit yndlingssprog kan være lettere end at ødelægge SQL'en, hvis du dog har mange BLOB'er at håndtere.

Som sædvanligt, hvis du har fremmednøgler, vil du sandsynligvis se nærmere på set constraints all deferred for at undgå at indsætte bestillingsproblemer skal du placere kommandoen i BEGIN/COMMIT-parret.

Tak til Nicolas Riley for de boolske, klat- og begrænsningsnoter.

Hvis du har ` på din kode, som genereret af nogle SQLite3-klienter, skal du fjerne dem.

PostGRESQL genkender heller ikke unsigned kolonner, så du vil måske droppe det eller tilføje en skræddersyet begrænsning som denne:

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

Mens SQLite standard nulværdier til '' , PostgreSQL kræver, at de sættes som NULL .

Syntaksen i SQLite dump-filen ser ud til at være for det meste kompatibel med PostgreSQL, så du kan patche et par ting og føre den til psql . Import af en stor bunke data gennem SQL INSERTs kan tage et stykke tid, men det vil fungere.



  1. PostgreSQL returnerer en funktion med en brugerdefineret datatype

  2. 5 tegn på, at du er vokset ud af Excel

  3. Måling af forespørgselsydeevne:Eksekveringsplan forespørgselsomkostninger vs. brugt tid

  4. IN-klausul begrænsning i SQL Server