2017-12-25 2 views
0

Beim Erstellen einer Tabelle, wie behandeln Sie einen Zeitstempel in CSV-Datei mit der folgenden Syntax - MM/DD/YY HH: MI? Hier ein Beispiel: 1/1/16 19:00In PostgreSQL, was ist der Datentyp, den Sie übergeben, wenn Sie mit Timestamp-Werten umgehen?

ich das folgende Skript in PostgreSQL versucht:

create table timetable (
    time timestamp 
); 

copy table from '<path>' delimiter ',' CSV; 

Aber ich erhalte eine Fehlermeldung, die besagt:

ERROR: ERROR: invalid input syntax for type timestamp: "visit_datetime" Where: COPY air_reserve, line 16, column visit_datetime: "visit_datetime"

Eine Lösung Ich habe in Betracht gezogen, zuerst die Timestamp-Spalte in char zu erstellen und dann eine separate Abfrage auszuführen, die sie in den entsprechenden Zeitstempel-Datentyp konvertiert, indem der Funktionsaufruf to_char (Zeit, MM/TT/JJ HH: MI) verwendet wird. Aber ich suche nach einer Lösung, die es ermöglicht, die Daten in einer einzigen Abfrage in den richtigen Datentyp zu laden.

+1

Mögliches Duplikat von [Importieren von .csv mit Zeitstempelspalte (dd.mm.yyyy hh.mm.ss) mit psql \ copy] (https://stackoverflow.com/questions/14042652/importing-csv-with-timestamp -column-tt-mm-jjjj-hh-mm-ss-using-psql-copy) – Dmitry

Antwort

0

Sie können eine datestyle finden, mit der Sie Ihre Daten laden können, aber früher oder später liefert Ihnen jemand etwas, das nicht passt.

Die Lösung, die Sie in Betracht gezogen haben, ist wahrscheinlich die beste.

Wir verwenden dies als Standardmuster für das Laden von Data Warehouses. Wir nehmen die heutigen Daten und laden sie in eine Staging-Tabelle mit varchar-Spalten für alle Daten, die nicht direkt in den Zieldatentyp geladen werden. Wir führen dann die Skripte aus, die wir benötigen, um die Daten in einen guten Zustand zu versetzen und Warnungen für alles zu erzeugen, was auf eine Weise unterbrochen ist, die wir noch nicht gesehen haben. Dann fügen wir die bereinigte Version der heutigen Daten in die Tabelle ein, die bereinigte Daten für alle vorherigen Tage enthält.

Es macht uns nichts aus, wenn dies mehrere Schritte dauert; Wir stellen sie alle in ein Skript und führen es als automatisierten Job aus.

Ich arbeite an der Dokumentation der Techniken, die wir verwenden. Sie können die Anfänge von diesem bei http://www.thedatastudio.net sehen.

+0

Vielen Dank für eine sehr umfassende und durchdachte Antwort! –

Verwandte Themen