Ошибка pg_atoi: zero-length string при copy из csv

mwolf
Дата: 06.09.2004 14:11:26
Привет всем.
Из консоли пишу
\copy temp_locations from '/var/lib/pgsql/csv/GeoIPCity-134-Location.csv' using delimiters ','

отгребаю
\.
ERROR:  copy: line 1, pg_atoi: zero-length string
lost synchronization with server, resetting connection

сам файл такой
1,"O1","","","",0.0000,0.0000,,
2,"AP","","","",35.0000,105.0000,,
3,"EU","","","",47.0000,8.0000,,
....

таблица
CREATE TABLE public.temp_locations
(
  loc_id int8 NOT NULL,
  country varchar(5),
  region varchar(5),
  city varchar(50),
  zip_code varchar(5),
  latitude float4,
  longitude float4,
  dma_code int4,
  area_code int4,
  CONSTRAINT pk_temp_locations PRIMARY KEY (loc_id)
) WITHOUT OIDS;

Как его загрузить?
wbear
Дата: 06.09.2004 14:27:33
заменять все ,"", на ,, пробовал?
pg не умеет '' (также как и 'NULL') преврящать в NULL::int
mwolf
Дата: 06.09.2004 14:32:06
wbear
заменять все ,"", на ,, пробовал?
pg не умеет '' (также как и 'NULL') преврящать в NULL::int

Да пробовал, буть оно не ладно
1,"O1",,,,0.0000,0.0000,,
2,"AP",,,,35.0000,105.0000,,
3,"EU",,,,47.0000,8.0000,,
то же самое ((
mwolf
Дата: 06.09.2004 14:42:37
Момент!!!
Что там насчёт NULL в int?
Поподробнее об этом месте можно?
Что за проблема и как с ней бороться?
LeXa NalBat
Дата: 08.09.2004 10:17:53
"pg_atoi: zero-length string" - не шмогла сконвертировать пустую строку в число

решение - в файл записывать \N; или в файл записывать 0; или copy ... with null as ''

автор
Момент!!!
Что там насчёт NULL в int?
Поподробнее об этом месте можно?
Что за проблема и как с ней бороться?
Ничего об этом не слышал. Тоже хотел бы узнать, если это действительно имеет место.
mwolf
Дата: 08.09.2004 12:13:17
Да. Проблема как раз, похоже, и заключалась в том, что пустая строка на конвертилась в NULL на целых полях. Я переделал таблицу и все целые поля втянул как строковые - там NULL-ы прошли нормально. А потом переконвертировал строки в числа, мне всё равно эту таблицу надо было растаскивать в несколько других.
Надо будет поэксперементировать с " copy ... with null as '' ".
LeXa NalBat
Дата: 08.09.2004 12:23:51
автор
Проблема как раз, похоже, и заключалась в том, что пустая строка на конвертилась в NULL на целых полях.


Вроде бы в постгресе до версии 7.3 пустая строка конвертилась в 0, а не в NULL.

Вот выдержка из release notes 7.3: An empty string ('') is no longer allowed as the input into an integer field. Formerly, it was silently interpreted as 0.
mwolf
Дата: 08.09.2004 13:25:21
LeXa NalBat

Вроде бы в постгресе до версии 7.3 пустая строка конвертилась в 0, а не в NULL.
Вот выдержка из release notes 7.3: An empty string ('') is no longer allowed as the input into an integer field. Formerly, it was silently interpreted as 0.


Вот тут есть один момент. Вот моя строка:
1,"O1","","","",0.0000,0.0000,,
последние 2 поля это целые поля. При таком раскладе вылазит ошибка. Чтоб туда попал 0, я так понял строка должна быть такой:
1,"O1","","","",0.0000,0.0000,"",""
LeXa NalBat
Дата: 08.09.2004 15:52:08
автор
последние 2 поля это целые поля. Чтоб туда попал 0, я так понял строка должна быть такой:
1,"O1","","","",0.0000,0.0000,"",""


Вроде бы нет. Такой: 1,"O1","","","",0.0000,0.0000,0,0