EXCEL импортирует в sql, возвращая NULL для десятичных дробей в типе данных VARCHAR - PullRequest
1 голос
/ 06 января 2011

Я работаю над частичкой программного обеспечения, которое значительно выросло за последние несколько лет, и база данных должна регулярно обновляться. Клиенты теперь предоставляют нам данные в больших электронных таблицах, которые мы форматируем и начнем импортировать в базу данных. Я использую Мастер импорта и экспорта данных (32-разрядный). Один столбец в базе данных содержит значения типа «1.1.1.2» и т. Д., И я импортирую их как Varchar, так как это тип данных в базе данных. Однако для таких значений, как '8.5', 'NULL' получает импортированный инсад. Это происходит только тогда, когда есть одна десятичная точка.

Это ошибка форматирования в Excel или неправильный тип данных?

Ответы [ 3 ]

2 голосов
/ 07 января 2011

Это форматирование в Excel.У меня было так много проблем с мастером импорта и экспорта данных и Excel, что теперь я сохраняю файл Excel сначала в виде файла csv, чтобы удалить форматирование, а затем импортирую его.Выполнение этого занимает несколько секунд, но сэкономило мне время от необходимости иметь дело с отбрасыванием ведущих нулей, случайными значениями NULL и т. Д.

1 голос
/ 19 ноября 2011

Я обнаружил, что, запустив скрипт, который ставит 'перед любыми числовыми полями, заставил их импортировать в SQL нормально.

Я столкнулся с этим в одной электронной таблице из 12, не был уверен, почему это стало проблемой.

Простой скрипт VBA может сделать это легко, если у вас много строк.

1 голос
/ 07 января 2011

Мой первый совет вам - попросить ваших клиентов отправлять вам текстовые файлы или, по крайней мере, файлы .csv. Преобразования в Excel ужасны, и вы потратите гораздо больше времени на то, чтобы все заработало правильно, чем если бы ваши клиенты перестали давать вам Excel для начала.

Проблема заключается в том, что тип данных определяется самыми ранними строками, и, таким образом, если Excel считает, что данные в дальнейшем будут Int или десятичными, а не текстом, импорт будет считать, что это плохие данные, и обнулять их.

Функция настройки Rant на: Я импортирую данные для жизни и отказываюсь принимать файлы Excel, потому что есть много, еще много проблем, с которыми приходится сталкиваться при попытке импортировать их и с любым другим типом файла. Нам пришлось разослать указания некоторым из них о том, как сохранить файл Excel в формате .csv, но создание импорта будет стоить нам гораздо меньше, если вы просто не примете Excel в качестве источника данных. Печально, что люди, которые разработали SSIS (то, что использует мастер под капотом), казалось, думали, что Excel - это то, что нужно импортировать немногим, и поэтому не тратят время на то, чтобы создать для него хороший путь импорта. , Это продукт их собственной компании, который громко кричит. Можно подумать, что он будет иметь некоторые из лучших поддержки. Отключение функции разглагольствования.

...