Hallo,
ich möchte gerne auch einer Ingres-DB Daten in eine PostgreSQL-DB überführen.
Beide Datenbanken laufen unter SunOS 5.10 und die Verwendete PG-Version ist die 8.1.3.
Ablauf:
Ein Shellscript holt sich per SQL-Statement die entprechende Tabelle aus der Ingres-DB (SELECT Spalte1, Spalte2,… FROM Ingres-Table…) und speichert diese temporär ab.
Per Stream-Editor (SED) wird die Textdatei umformatiert und anschließend über die COPY-Funktion in die zuvor erzeugte PortgreSQL-DB überführt.
Mein Problem:
Nach der Syntaxbeschreibung des COPY-Befehls können Trennzeichen, NULL-Werte usw angegeben werden.
Bei mir funktioniert es leider nicht ganz wie gewünscht.
COPY public.table
FROM STDIN
WITH
DELIMITER AS ‘|’
NULL AS ‘null’
;
erzeugt die Fehlermeldung
ERROR: invalid input syntax for integer: “”
Ich habe anscheinend ein Problem mit undefinierten Werten
Wenn ich die Doku richtig verstanden habe, sucht doch NULL AS ‘suchstring’ nach dem Suchstring und macht aus diesem Wert beim Kopieren der Daten NULL.
Dann verstehe ich nicht, warum aus ‘suchstring’ nicht NULL, sondern “” wird.
NULL as ‘bla’ bedeutet, daß NULL als ‘bla’ und nicht als ‘\N’ dargestellt wird. Damit ist nicht gesagt, daß er ‘’ als NULL interpretieren soll. Alles klar?