sql >> Databasteknik >  >> RDS >> PostgreSQL

Konvertera SQLITE SQL dumpfil till POSTGRESQL

Du borde kunna mata den dumpfilen direkt till psql :

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

Om du vill ha id kolumn till "automatisk inkrement" och ändra sedan dess typ från "int" till "seriell" i raden för tabellskapande. PostgreSQL kommer sedan att bifoga en sekvens till den kolumnen så att INSERTs med NULL-ID automatiskt tilldelas nästa tillgängliga värde. PostgreSQL kommer inte heller att känna igen AUTOINCREMENT kommandon, så dessa måste tas bort.

Du vill också kontrollera datetime kolumner i SQLite-schemat och ändra dem till timestamp för PostgreSQL. (Tack till Clay för att du påpekade detta.)

Om du har booleaner i din SQLite kan du konvertera 1 och 0 till 1::boolean och 0::boolean (respektive) eller så kan du ändra den booleska kolumnen till ett heltal i schemadelen av dumpen och sedan fixa dem för hand i PostgreSQL efter importen.

Om du har BLOBs i din SQLite så vill du justera schemat för att använda bytea . Du måste förmodligen blanda in någon decode ringer också. Att skriva en quick'n'dirty kopiator på ditt favoritspråk kan vara enklare än att mangla SQL om du dock har många BLOBs att hantera.

Som vanligt, om du har främmande nycklar kommer du antagligen att vilja titta på set constraints all deferred för att undvika att lägga in beställningsproblem, placera kommandot i BEGIN/COMMIT-paret.

Tack till Nicolas Riley för de booleska, blob- och begränsningsanteckningarna.

Om du har ` på din kod, som genereras av vissa SQLite3-klienter, måste du ta bort dem.

PostGRESQL känner inte heller igen unsigned kolumner, så du kanske vill släppa det eller lägga till en skräddarsydd begränsning som denna:

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

Medan SQLite förinställer nollvärden till '' , PostgreSQL kräver att de ställs in som NULL .

Syntaxen i SQLite-dumpfilen verkar mestadels vara kompatibel med PostgreSQL så att du kan korrigera några saker och mata den till psql . Att importera en stor hög med data via SQL INSERT kan ta ett tag men det kommer att fungera.



  1. PostgreSQL Autoincrement

  2. Hur man skapar transaktionsreplikering

  3. PostgreSQL Skapa databas

  4. Konvertera en rad till flera rader med färre kolumner