Ergebnis 1 bis 5 von 5

Thema: COPY aus STDIN - Problem mit NULL

  1. #1
    chr_mueller ist offline Neuer Benutzer
    Registriert seit
    08.11.2010
    Beiträge
    3

    Standard COPY aus STDIN - Problem mit NULL

    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 :-)

    Gibt es vielleicht einen besseren Ansatz?

    Viele Grüße
    Chr.

  2. #2
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von chr_mueller Beitrag anzeigen
    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 :-)

    Gibt es vielleicht einen besseren Ansatz?

    Viele Grüße
    Chr.
    Ja, Du stellst halt NULL nicht als 'null' dar, sondern als '', was aber für einen INT-Wert falsch ist.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    chr_mueller ist offline Neuer Benutzer
    Registriert seit
    08.11.2010
    Beiträge
    3

    Standard

    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.


    Viele Grüße
    Christian

  4. #4
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von chr_mueller Beitrag anzeigen
    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.


    Viele Grüße
    Christian
    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?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  5. #5
    chr_mueller ist offline Neuer Benutzer
    Registriert seit
    08.11.2010
    Beiträge
    3

    Standard

    Danke für die Hilfe, mein Problem ist gelöst!

    Die Lösung war der zusätzliche Parameter CSV, der leere Zeichenketten als NULL erkennt.
    Jetzt ist alles so wie ich es wollte.

    Gruß
    Christian

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 11.02.2011, 12:23
  2. Problem copy hängt
    Von symbiont im Forum Allgemeines
    Antworten: 7
    Letzter Beitrag: 25.11.2008, 20:32
  3. insert bzw. copy
    Von tmoebus im Forum Trigger und Funktionen
    Antworten: 2
    Letzter Beitrag: 08.02.2008, 18:18
  4. Antworten: 4
    Letzter Beitrag: 29.01.2008, 15:07
  5. NULL und NOT NULL
    Von ipConfig im Forum SQL
    Antworten: 2
    Letzter Beitrag: 26.11.2007, 17:56

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum