Как преобразовать строку в деньги в процессе преобразования преобразования данных в SSIS? - PullRequest
0 голосов
/ 16 января 2019

Как преобразовать строку в деньги в процессе преобразования преобразования данных в SSIS?

Мой исходный файл является файлом Excel.Я добавил преобразование преобразования данных, чтобы преобразовать столбец Price в тип данных "currency[DT_CY]".

Source value : $50,240.30

Expected result : 50240.30

В таблице назначения SQL есть столбец Price с типом данных: Money

Однако преобразование завершается неудачно со следующей ошибкой:

The "Data Conversion.Outputs[Data Conversion Output].Columns[Price]" failed because error code 0xC020907F occurred, and the error row disposition on "Data Conversion.Out

Этот запрос работает .. нормально .. Однако этот запрос применяется только после того, как мы получили данные в таблицу.

Мы пытаемся получить данные при загрузке в таблицу как данные типа «Деньги».

select convert(MONEY, [Price]) AS [Price] , * from dbo.StagingTable

Согласно комментарию Ника, преобразование исходного файла работает нормально.Однако нам необходимо преобразовать строку в тип данных Money.

Исходная цена: $ 55 176,80

Выражение производного столбца: REPLACE(REPLACE([Price],"$",""),",","") Тип данных: DT_WSTR

Выходная цена:55176,80

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Как предложил @ Nick.McDermaid, попробуйте очистить данные и выполнить приведение с использованием производного столбца, прежде чем вставлять его в SQL Server. Также убедитесь, что вы проверите для значений NULL. Вы можете использовать следующее выражение:

ISNULL([Price]) ? NULL(DT_CY) : ([Price] == "" ? NULL(DT_CY) : (DT_CY)(REPLACE(REPLACE((DT_WSTR,50)[Price],"$",""),",",""))) 

После удаления знака $ и запятых , операция приведения будет работать нормально.

Полезная ссылка

0 голосов
/ 16 января 2019

Я думаю, вам нужно использовать CONVERT следующим образом:

(DT_DECIMAL,3)[Price]

Вы можете найти информацию о функции CAST: https://docs.microsoft.com/en-us/sql/integration-services/expressions/cast-ssis-expression?view=sql-server-2017

Это способ выполнить преобразование в SSIS.

...