2016-08-02 5 views
2

Я использую Postgres 9.5.3 (В Ubuntu 16.04) и у меня есть таблица с некоторыми timestamptz полямиPostgres: Ошибка при использовании COPY из CSV с типом timestamptz

... 
datetime_received timestamptz NULL, 
datetime_manufactured timestamptz NULL, 
... 

я использовал следующую команду SQL для генерировать CSV файл:

COPY (select * from tmp_table limit 100000) TO '/tmp/aa.csv' DELIMITER ';' CSV HEADER; 

и используется:

COPY tmp_table FROM '/tmp/aa.csv' DELIMITER ';' CSV ENCODING 'UTF-8'; 

импортировать в таблицу.

Пример строк в файле CSV:

CM0030;;INV_AVAILABLE;2016-07-30 14:50:42.141+07;;2016-08-06 00:00:000+07;FAHCM00001;;123;;;;;1.000000;1.000000;;;;;;;;80000.000000;;;2016-07-30 14:59:08.959+07;2016-07-30 14:59:08.959+07;2016-07-30 14:59:08.959+07;2016-07-30 14:59:08.959+07; 

Но я сталкиваюсь следующее сообщение об ошибке при выполнении второй команды: часовой пояс

ERROR: invalid input syntax for type timestamp with time zone: "datetime_received" 
CONTEXT: COPY inventory_item, line 1, column datetime_received: "datetime_received" 

Моей базы данных является:

show timezone; 
TimeZone 
----------- 
localtime(GMT+7) 
(1 row) 

Есть ли какой-либо недостающий шаг или неправильная конфигурация?

Любые предложения приветствуются!

+0

Что делают строки в '/ tmp/aa.csv' ... – donkopotamus

+0

@donkopotamus Отредактировано;) –

+0

Просто подозрение: измените' 2016-08-06 00: 00: 00 + 07' на '2016- 08-06 00: 00: 00.000 + 07' в этой строке и запустите его снова, пожалуйста. –

ответ

1

Ошибка, которую вы видите, означает, что Postgres пытается (и не удается) преобразовать строку 'datetime_received' в значение метки времени.

Это происходит потому, что COPY пытается вставить строку заголовка в таблицу. Вам нужно включить предложение HEADER в команду COPY FROM, как и вы для COPY TO.

В общем случае при использовании COPY для перемещения данных необходимо убедиться, что команды TO и FROM используют точно такие же параметры. Задание ENCODING для одной команды, а не для другого, может привести к ошибкам или незащищенным данным, если ваша клиентская кодировка не является UTF8.

Смежные вопросы