Страница 1 из 1

При экспорте атрибутов в csv NULL становится "0"

Добавлено: 10 май 2012, 00:32
SS_Rebelious
Если экспортировать атрибуты в csv, то те значения которые были NULL принимают значение "0". Не особенно приятная вещь, особенно если среди атрибутов действительно присутствуют нули.

Re: При экспорте атрибутов в csv NULL становится "0"

Добавлено: 10 май 2012, 10:37
Voltron
ИМХО, не ошибка. NULL это специальная сущность в БД, соответственно, вне их она смысла не имеет. Ведь среди атрибутов могут быть и строки, в том числе и со значением "NULL"

Re: При экспорте атрибутов в csv NULL становится "0"

Добавлено: 10 май 2012, 11:16
Александр Мурый
Voltron писал(а):ИМХО, не ошибка. NULL это специальная сущность в БД, соответственно, вне их она смысла не имеет.
Зачем же так категорично, в таблицах с данными типа CSV вполне может быть свой NULL (ну или NaN, если угодно). Было бы недурно разграничить "0" и "NULL" при экспорте атрибутов в CSV (например, сделать выбор символа(ов), который будет за NULL).

Re: При экспорте атрибутов в csv NULL становится "0"

Добавлено: 10 май 2012, 11:20
SS_Rebelious
Думаю, было бы логично при экспорте в csv NULL заменять на пустое значение.

Re: При экспорте атрибутов в csv NULL становится "0"

Добавлено: 10 май 2012, 15:29
Voltron
amuriy писал(а):Зачем же так категорично, в таблицах с данными типа CSV вполне может быть свой NULL (ну или NaN, если угодно).
Потому что NULL или NaN в CSV это обычное строковое значение, а не NULL в том понимании, которое используется в БД. Возможно, я не прав, в таком случае прошу ткнуть меня в соответствующие доки.
amuriy писал(а):Было бы недурно разграничить "0" и "NULL" при экспорте атрибутов в CSV (например, сделать выбор символа(ов), который будет за NULL).
Экспортом занимается OGR, так что вам сюда

Re: При экспорте атрибутов в csv NULL становится "0"

Добавлено: 10 май 2012, 16:03
Максим Дубинин
так может тогда просто "пусто" вставлять было бы правильнее, а не 0?

Re: При экспорте атрибутов в csv NULL становится "0"

Добавлено: 10 май 2012, 16:08
Voltron
Максим Дубинин писал(а):так может тогда просто "пусто" вставлять было бы правильнее, а не 0?
Для числовых полей это вариант, а вот со строковыми опять проблема. Может, у меня там и должна быть пустая строка, что тогда?

Re: При экспорте атрибутов в csv NULL становится "0"

Добавлено: 10 май 2012, 16:25
Александр Мурый
Тест.

Шейп со значениями "0" и "NULL" в атрибутах:
test_csv.zip
(1.08 КБ) 446 скачиваний
test_csv.png
test_csv.png (10.8 КБ) 10338 просмотров
Сохраняем через QGIS в CSV:

Код: Выделить всё

id,N
1,0
2,0
3,0
5,0
7,0
8,0
Делаем через OGR:

Код: Выделить всё

ogr2ogr -f "CSV" test_csv.csv test_csv.shp

Код: Выделить всё

id,N
1,0
2,
3,0
5,
7,0
8,
???

Re: При экспорте атрибутов в csv NULL становится "0"

Добавлено: 10 май 2012, 16:37
Александр Мурый
Может, конечно, дело в версиях GDAL (консольный у меня 1.9.0), QGIS из репозитория собрана с 1.6.3
Проверил:

Код: Выделить всё

$ ldd /usr/bin/qgis | grep libgdal
libgdal1.6.0.so.1 => /usr/lib/libgdal1.6.0.so.1

Re: При экспорте атрибутов в csv NULL становится "0"

Добавлено: 12 май 2012, 13:03
Александр Мурый
Хотелось бы всё-таки услышать комментарии по поводу нулей и NULL'ей. Проблема есть, или мне показалось?

Re: При экспорте атрибутов в csv NULL становится "0"

Добавлено: 12 май 2012, 13:47
Максим Дубинин
спасибо за тесты, я попробовал сделать тоже самое в QGIS и ogr2ogr, у меня точно такие же результаты, причем QGIS собран с 1.9, так что видимо то что у тебя 1.6 - не важно.

Я бы тоже хотел увидеть резюме по этому вопросу от кого-то, кто может поковыряться в исходниках QGIS/GDAL