Ich habe etwa 32 Millionen Tupeln von Daten des Formats:Umgang mit seltsam formatierten Zeitstempel in Postgres?
2012-02-22T16: 46: 28,9670320 + 00: 00
I wurde gesagt, dass die +00:00
zeigt eine Zeitzone hour:minute
Offset, aber auch, dass Postgres nur Stunden-Offset (auch in Dezimalzahlen), nicht die Minute einnimmt. Würde ich also die Daten verarbeiten müssen, um die letzten :00
aus jedem Tupel zu entfernen und die Daten als Zeitstempel einzulesen? Ich möchte die Vorverarbeitung der Datendatei vermeiden, aber wenn Postgres die Werte nicht akzeptiert, werde ich das tun.
Darüber hinaus beträgt die in den angegebenen Daten angegebene Genauigkeit 7 Dezimalstellen im Sekundenabschnitt, während der Postgres-Zeitstempel-Datentyp maximal 6 Dezimalstellen (Millisekunden) zulässt. Müsste ich die Dezimalstellengenauigkeit von 7 auf 6 ändern, damit Postgres die Datensätze lesen kann, oder wird Postgres die 7 automatisch in 7 umwandeln, wenn die Tupel gelesen werden?
Wie werden Sie Ihre Datendatei in Postgres pushen? Ich erwarte, dass Sie sicherstellen müssen, dass die Formatierung korrekt ist, wenn Sie nur die Datendatei laden möchten. Wenn Sie eine Art von Skript verwenden, um die Datenbankschreibvorgänge zu behandeln, sollte das Skript geschrieben werden, um die Daten auch in das erforderliche Format zu konvertieren. Eine typenbewusste Schnittstelle (wie Overkill) wie SQLAlchemy kann auch komplexere Konvertierungen durchführen. –
Ich versuche, kopieren (Tabelle) aus dem Programm (Schnittfelder, Datei). Ich habe gesehen, dass dies möglich ist: 'pgsql = # SELECT '2016-07-10 20: 12: 21.8372949999 + 02: 30' :: Zeitstempel mit Zeitzone AS ts; ts ------------------------------- 2016-07-10 17: 42: 21.837295 + 00 (1 Zeile) ' so scheint es, dass Postgres diese Fälle automatisch konvertiert, also wenn es hier tut, ich glaube, es sollte auch die Tupel konvertieren, wenn sie aus der Datei lesen. – Ben