Próbuję zaimportować dane z pliku .csv do bazy danych PostgreSQL 9.2 przy użyciu polecenia psql \COPY
(nie SQL KOPIUJ).Importowanie .csv z kolumną znacznika czasowego (dd.mm.rrrr hmmmm.ss) przy użyciu psql copy
Plik wejściowy .csv zawiera kolumnę ze znacznikiem czasu w formacie dd.mm.rrrr hh.mm.ss.
Ustawiłem styl danych bazy danych na DMY przy użyciu.
set datestyle 'ISO,DMY'
Niestety, po uruchomieniu polecenia \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'
otrzymuję ten błąd:
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"
Co jest nie tak z datestyle?
Dzięki za pomoc. Ręcznie zmodyfikowałem konfigurację na datestyle = 'iso, dmy' w pliku postgresql.conf, a import działa teraz poprawnie. Nie jestem pewien, czy to właśnie sugerujesz. Jednak szukam sposobu na ustawienie datactwa serwera za pomocą komendy psql. – jatobat
Cóż, modyfikowanie pliku postgresql.conf jest jednym z radykalnych sposobów na zrobienie tego. Możesz także wydać komendę SQL w sposób opisany w twojej sesji przed uruchomieniem '\ copy'. To ustawienie zostanie zmienione tylko dla tej sesji. –
Próbowałem po prostu uruchamiać polecenie 'set datestyle = 'ISO, DMY';' SQL w edytorze (przed modyfikacją pliku postgresql.conf), a następnie wykonać psql \ copy, ale dostałem ten sam błąd co poprzednio. – jatobat