Импорт из Excel, как пустые ячейки не воспринимать как NULL?

Обсуждение возникших проблем, предложений и ошибок dbForge для MySQL
Закрыто
chekarevka
Сообщения: 3
Зарегистрирован: Вт 14 ноя 2017 05:19

Импорт из Excel, как пустые ячейки не воспринимать как NULL?

Сообщение chekarevka » Вт 14 ноя 2017 08:55

Здравствуйте.

Есть таблица, в ней несколько столбцов имеют тип varchar и признак NOT NULL. Необходимо загрузить в таблицу данные из Excel-файла. Некоторые ячейки в нем (для вышеуказанных столбцов) являются пустыми. Но это не отсутствие значения, они должны быть загружены как пустые строки (""). Но программа однозначно воспринимает пустые ячейки как отсутствие значения (то есть NULL) и выдает ошибку "Импортируемые данные содержат пустые значения, для NOT NULL столбцов". Я пытался играться с параметром "Null строка" на шаге "Форматы данных" (очищал, писал там "null", "nenull") - безрезультатно. Это особенность реализации импорта или я в чем-то не разобрался?

Ну и чтоб два раза не ходить. В процессе экспериментов (на версии 7.2.78) обнаружил странное поведение импорта (из Excel). Вот запускаю я мастер, прохожу все шаги и в конце получаю вышеупомянутое "Импортируемые данные содержат пустые значения, для NOT NULL столбцов". Говорю "Игнорировать все", жму кнопку "Импортировать еще" (не закрывая мастер). Снова прохожу все шаги, меняя только параметр "Null строка" на шаге "Форматы данных". И вуаля - импорт завершен без ошибок, количество импортируемых строк соответствует тому, что было в файле. Но в реальности ни одна строка не добавилась. А вот если закрыть мастер, запустить снова, то импорт завершится с ошибкой (как и должен).

chekarevka
Сообщения: 3
Зарегистрирован: Вт 14 ноя 2017 05:19

Re: Импорт из Excel, как пустые ячейки не воспринимать как NULL?

Сообщение chekarevka » Ср 15 ноя 2017 13:25

Ирония судьбы. Несколько лет жил с этой проблемой, наконец руки дошли задать вопрос тут на форуме, и в тот же день столкнулся с обратным - в вышеописанной ситуации файл вдруг взял и залился без проблем. Так, как мне надо - пустые ячейки легли в базу именно как пустые строки. Начал рыться в файле и выяснил для себя кое-что новое. Поделюсь с общественностью, может не все еще в курсе.

Оказывается, в Excel есть "пустые" ячейки, а есть "очень пустые" (термины придуманы мной :) ). Внешне (на листе) они не отличаются, НО! "Пустые" содержат в себе пустую строку. "Очень пустые" не содержат ничего. Это хорошо заметно, если сохранить файл в XML-формате. Ну или залезть внутрь - там тот же XML, только замороченный. Так вот, для "пустой" ячейки присутствует описывающий ее тег, то есть она как бы все-таки фигурирует. Для "очень пустой" ячейки тега нет, то есть она вообще никак не описана. Соответственно и dbForge воспринимает данные из таких ячеек как пустые строки или как NULL. Вот и вся разгадка. Беспроблемно загрузившийся файл был получен из SAPа и в нем пустые ячейки были "просто пустыми". А до этого я всегда работал с файлами, где ячейки были "очень пустыми".

Кстати, в седьмой версии dbForge такие ячейки по разному показываются в предпросмотре загружаемых данных в мастере импорта (как пустые или со значением null). Более младшие версии (проверял на пятой и шестой) разницу не показывают, но понимают.

Как в Excelе переделать ячейки из "очень пустых" в "пустые" - не знаю, пока не разбирался. Может и есть возможности (хотя не уверен). В любом случае это будет лишний головняк. Поэтому все таки очень бы хотелось, чтобы разработчики (кстати, АУ! Вы здесь бываете?) предусмотрели настройку, позволяющую задать, как программа будет воспринимать ячейки разного типа пустоты (как NULL или как пустые строки).

Ну или еще вариант решения данной проблемы - сохранять данные для загрузки в формате CSV. Там ячейки любой пустоты будут пустыми строками.

Alexander

Re: Импорт из Excel, как пустые ячейки не воспринимать как NULL?

Сообщение Alexander » Пн 27 ноя 2017 10:56

Не могли бы Вы прислать нам Excel файл, а также указать, в каких колонках "пустые" ячейки и в каких "очень пустые"?

chekarevka
Сообщения: 3
Зарегистрирован: Вт 14 ноя 2017 05:19

Re: Импорт из Excel, как пустые ячейки не воспринимать как NULL?

Сообщение chekarevka » Вт 28 ноя 2017 12:24

Прикладываю файл. В столбце "Табельный номер" ячейка "просто пустая", а в столбце "Вид даты" - "очень пустая".
Вложения
2017-11-13_SAP_export000000000394_даты_приема.zip
(5.99 КБ) 255 скачиваний

Alexander

Re: Импорт из Excel, как пустые ячейки не воспринимать как NULL?

Сообщение Alexander » Вт 28 ноя 2017 16:33

Спасибо за ответ.

Мы исследуем возможность обрабатывать такие ячейки.

Закрыто