Ich versuche, Daten aus einer CSV-Datei in eine postgresql 9.2-Datenbank mit dem psql \COPY
-Befehl (nicht die SQL-COPY) zu importieren.
Die Eingabe-CSV-Datei enthält eine Spalte mit einem Zeitstempel im Format TT.MM.JJJJ hh.mm.ss.
Ich habe den Datenbankdatestyle mit DMY eingestellt.
%Vor% Leider, wenn ich den Befehl \COPY
ausführen:
Ich bekomme diesen Fehler:
FEHLER: Datum / Uhrzeit Feldwert außerhalb des gültigen Bereichs: "16.11.2012 07:10:06"
TIPP: Vielleicht brauchen Sie eine andere "date style" -Einstellung.
KONTEXT: COPY-Kurve, Zeile 2, Spalte timestamp_mes: "16.11.2012 07:10:06"
Was stimmt nicht mit dem Datumsstil?
Haben Sie versucht, die datestyle
Einstellung von Server ?
Sie verwenden den psql-Meta-Befehl \copy
, was bedeutet, dass die Eingabedatei lokal für den Client ist. Aber es ist immer noch der Server, der die Eingabe zu passenden Datentypen zwingen muss.
Ganz allgemein, im Gegensatz zum psql-Meta-Befehl \copy
, der COPY
auf dem Server aufruft und eng damit verwandt ist. Ich zitiere das Handbuch zu \set
:
Hinweis: Dieser Befehl hat nichts mit dem SQL-Befehl SET zu tun.
Ich fand es schwierig, 'SET date style' in derselben Sitzung anzuwenden, wenn ich den Befehl psql anwendete. Das Ändern des Datumsstils auf der gesamten Datenbank / dem gesamten Server (nur für den Import) kann auch Nebenwirkungen auf andere Benutzer oder bestehende Anwendungen verursachen. Also ändere ich normalerweise die Datei selbst vor dem Laden:
%Vor%Der Datumsstil, den Sie zu verwenden scheinen, ist Deutsch. PostgreSQL unterstützt diesen Datumsstil. Versuchen Sie Folgendes:
%Vor%Tags und Links postgresql csv postgresql-9.2 timestamp psql