SSIS 2008 — значение с плавающей запятой экспортируется в экспоненциальное значение в целевом файле Flat

Я пытаюсь экспортировать таблицу в плоский файл. Значение столбца с плавающей запятой (0,0911780821917808) экспортируется в 9.1178082191780821E-2 в плоском файле.

Таблица создать таблицу Test ( col1 float )

Столбец 1 0,0911780821917808

Экспорт этой таблицы в плоский файл назначения. Однако экспортируется в значение 9.1178082191780821E-2 в файле .txt. Однако правильное значение появляется в DataViewer после источника OLE DB.

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

Заранее спасибо за все ваше время

С уважением,

Сталин


person Stalin    schedule 31.05.2021    source источник


Ответы (1)


У меня были подобные проблемы раньше, и самым безопасным способом оказалось преобразование в строку в источнике с помощью функции STR. Например, вы можете прочитать свою таблицу в источнике OLEDB с помощью SQL-запроса следующим образом:

SELECT LTRIM(STR(col1,25,18) ) Col1casted
FROM
TEST

Затем вам может потребоваться воссоздать назначение плоского файла (или изменить типы данных).

В этом примере я устанавливаю преобразованное значение равным 25, из которых 18 являются десятичными, но вы можете настроить его так, чтобы оно покрывало диапазон значений в вашей таблице.

Для Оракула:

SELECT TO_CHAR(0.0911780821917808267712341,'9D9999999999999999') FROM DUAL;

выше формат установлен на 16 знаков после запятой, например, в скрипте sql

https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=487fe7bf6cf3a2263f98852

person Jayvee    schedule 31.05.2021
comment
Большое спасибо. Я использую базу данных Oracle. Не могли бы вы сообщить мне, что такое эквивалентная функция в Oracle. - person Stalin; 31.05.2021
comment
Я попытался запросить это поле с помощью TO_CHAR (поле). Он приходит как .091178082191780821917808219178082191781 - person Stalin; 31.05.2021
comment
базовое поле таблицы является числовым полем без точности и масштаба. Поэтому мне нужно экспортировать значение в виде плоского файла. - person Stalin; 31.05.2021
comment
Да, TO_CHAR должен работать, вы также можете установить формат. Это длинное число, вероятно, действительно хранится внутри Oracle, вы можете оставить его таким или установить количество десятичных знаков в соответствии с потребностями бизнеса. Я обновил ответ примером. - person Jayvee; 31.05.2021