2015-05-29 2 views
-1

У меня есть таблица:неверный входной синтаксис для целого числа с Postgres

   id | detail 
       1 | ddsffdfdf ;df, deef,"dgfgf",/dfdf/ 

, когда я сделал: insert into details values(1,'ddsffdfdf ;df, deef'); => был вставлен правильно Когда я скопировал вставлено значение из базы данных в файл, файл был: 1 ddsffdfdf ;df, deef Затем я загрузил весь файл CSV в PGSQL базы данных, со значениями в формате: 1 ddsffdfdf ;df, deef ERROR: неверный входной синтаксис для целого числа:.? «1 ddsffdfdf; Д.Ф., deef получается как решить проблему

+1

Как вы загрузив файл CSV в PG? –

+0

копировать данные из '/usr/local/bin/details.csv'; – user3823859

+2

Измените свой вопрос и укажите ** точный ** оператор, который вы использовали для импорта файла и ** точного ** содержимого _file_. –

ответ

3

версии CSV необходимо разделителем, который Postgres будет распознать, чтобы разбить текст на соответствующие поля. Ваш разделитель - это пространство, которого недостаточно. Файл CSV должен выглядеть как:

1,"ddsffdfdf df, deef" 

и ваш SQL должен выглядеть следующим образом:

COPY details FROM 'filename' WITH CSV; 

С CSV важно, потому что он говорит Postgres использовать запятую в качестве разделителя и разбирает СВОЙ значения на основе этого. Поскольку ваше второе поле содержит запятую, вы хотите заключить его значение в кавычки, чтобы его запятая не была ошибочной для разделителя.

Чтобы посмотреть на хороший пример правильного формата файла CSV, вы можете вывести ваш текущий стол:

COPY details TO '/your/filename.csv' WITH CSV; 
+0

Я пробовал с разделителем, но это также ошибка – user3823859

+0

вы неправильно поняли: не имеют пробела в качестве разделителя – knitti

+0

@ user3823859, если вы используете разделитель запятой, вам нужно использовать соответствующие цитаты вокруг других значений, содержащих запятые. – vol7ron

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