Sto cercando di importare i dati da un file .csv in un database postgresql 9.2 utilizzando il comando psql \COPY
(non lo SQL COPIA).Importazione di .csv con la colonna timestamp (gg.mm.aaaa hh.mm.ss) utilizzando psql copy
Il file .csv di input contiene una colonna con un timestamp nel formato gg.mm.aaa hh.mm.ss.
Ho impostato lo datestyle del database su DMY utilizzando.
set datestyle 'ISO,DMY'
Purtroppo, quando si esegue il comando \COPY
:
\COPY gc_test.trace(numpoint,easting,northing,altitude,numsats,pdop,timestamp_mes,duration,ttype,h_error,v_error)
FROM 'C:\data.csv' WITH DELIMITER ';' CSV HEADER ENCODING 'ISO 8859-1'
ottengo questo errore:
ERROR: date/time field value out of range: "16.11.2012 07:10:06"
HINT: Perhaps you need a different "datestyle" setting.
CONTEXT: COPY trace, line 2, column timestamp_mes: "16.11.2012 07:10:06"
Cosa c'è di sbagliato con il datestyle?
Grazie per il vostro aiuto. Ho modificato la configurazione manualmente su datestyle = 'iso, dmy' nel file postgresql.conf e l'importazione funziona bene ora. Non sono sicuro se questo è quello che stai suggerendo. Sto comunque cercando un modo per impostare il datestyle del server con un comando psql. – jatobat
Bene, modificare postgresql.conf è un modo radicale per farlo. È anche possibile emettere il comando SQL come indicato nella sessione prima di eseguire '\ copy'. Quindi l'impostazione viene modificata solo per quella sessione. –
Ho provato a eseguire l'insieme di 'set datestyle = 'ISO, DMY';' comando SQL nell'editor (prima di modificare il file postgresql.conf) e quindi l'esecuzione di psql \ copy, ma ho ricevuto lo stesso errore di prima. – jatobat