У меня есть пакет dtsx, работающий в SSIS на нашем сервере SQL (2016 SP2 CU6), это легкая задача импорта листа Excel (xlsx) в таблицу в SQL как есть, на этом этапе никаких преобразований не требуется, это агентская работа, которая делает гораздо больше, но я вижу, что ошибка происходит именно в этом разделе.
Проблема, с которой я сталкиваюсь, заключается в том, что число в Excel (0.0153
) выглядит в SQL, как если бы оно плохо конвертировалось (1.5299999999999999E-2
).
Чтобы подтвердить, что число в Excel - 0.0153
, а не что-то более длинное или отформатированное, чтобы выглядеть следующим образом.
После импорта вот что у меня есть: -
Я нахожу это странным как: -
- Они оба находятся в очень похожей ситуации, но с разными результатами
- Они располагаются один за другим в листе Excel
- Они находятся в верхней части листа (строки 10 и 11), поэтому при выборке следует использовать их для понимания типа данных, если происходит что-то подобное (строка 1 равна
0.193841
, что также аналогично, общий диапазон равен От -29 до 200 (до 7 знаков после запятой)
- Разница между ними всего 0,0021
Числовой формат в Excel - General
, а столбец в SQL - NVARCHAR(255)
В пакете служб SSIS исходный тип данных Excel для внешнего столбца классифицируется как double-precision float [DT-R8]
(не знаю, откуда это, но я не могу его изменить) и вывод Колонка is Unicode string [DT-WSTR]
Затем я использую Native OLE DB\SQL Server Native Client 11.0
OLD DB Connection для доступа к таблице.
Это простой пакет, но почему это значение так резко возросло. Это не единица, вход имеет около 1700 строк, и мы видим это по ряду строк.