Я использую SSIS для загрузки файла Flat с фиксированной длиной в SQL.Плоский файл SSIS с числовым типом данных с пробелами
У меня есть поле вес, которое давало мне неприятности весь день. Он имеет длину 8 с 6 ПОДОБНЫМИ ПОЛОЖЕНИЯМИ (99V990099).
Проблема, которая возникает у меня, когда она не заполнена и имеет 8 пробелов.
Все я стараюсь получает ошибку:.
«Недопустимое значение символа для брошенной спецификации»» ИЛИ „Конверсия не удалось, так как значение данных переполнена указанного типа“преобразование ИЛИ данных не удалось ... преобразование данных для столбца «REL_WEIGHT» возвращается значение состояния 2 и текст статуса «значение не может быть преобразован из-за возможной потери данных.».
Я попытался объявить его как DT_String & DT_Numeric.
Я пробовал много вариантов:
TRIM([REL_WEIGHT])=="" ? (DT_STR,8,1252)NULL(DT_STR,8,1252) : REL_WEIGHT
ISNULL([REL_WEIGHT]) || TRIM([REL_WEIGHT]) == "" ? (DT_NUMERIC,8,6)0 : (DT_NUMERIC,8,6)[REL_WEIGHT]
TRIM(REL_WEIGHT) == "" ? (DT_NUMERIC,8,6)0 : (DT_NUMERIC,8,6)REL_WEIGHT
Но ничто не похоже на работу.
Пожалуйста, у кого-то есть исправление для этого!
Я создал 2 новые столбцы в моем SQL таблицы. 1 как Char (8) и 1 как INT вместе с Колонкой уже там как Десятичный (8,6).Так что все, что я пытаюсь, у меня есть место, чтобы загружать все, чтобы найти что-то, что работает. –
Когда вы говорите «столбец уже есть как десятичный (8,6)», вы имеете в виду, что вы загрузили данные плоского файла с использованием целевых типов данных, т. Е. Десятичного для столбца «REL_WEIGHT»? Это неверно; вам нужно загрузить его как строковый тип, потому что вы должны его проверить, прежде чем преобразовать его в десятичный. – bgoldst
IIRC, редактор диспетчера соединений с плоским файлом, где вы настраиваете начальные типы нагрузки. Вы должны установить их в строки в этом редакторе. Обратившись к примеру кода, вставленному в мой ответ, я первоначально загрузил столбец (названный 'Last_Update_Time__orig') из плоского файла как DT_STR, а затем код получил новый столбец (названный им' Last_Update_Time') как DT_DBTIME2. – bgoldst