2015-12-12 2 views
0

У меня есть требование, когда мне нужно загрузить данные в таблицу SQL Server из файла .CSV. Файл имеет около 20 столбцов, каждый из которых имеет тип данных, заданный как General.Импорт CSV-файла в таблицу SQL Server с использованием SSIS

Однако есть несколько столбцов, которые относятся к типу Currency. Я пытаюсь загрузить файл через DFT в SSIS. После загрузки файла, то SSIS терпит неудачу в исходной задаче, с сообщением об ошибке с указанием

преобразования не может быть сделано, поскольку это может привести к потенциальной потере данных

для одного из суммы столбцов (назовем его cAmount), который имеет суммы в долларах США. Это не соответствует SSIS. Он не удался с метаданными столбца в SSIS, установленном на DT_CR(currency), DT_STR. Однако, если я изменю этот тип на числовой или общий в файле .CSV, он преуспеет без каких-либо проблем.

Есть ли что-то, что я делаю неправильно или просто невозможно загрузить тип валюты в таблицу SQL Server?

Пожалуйста, дайте мне знать, если вышеуказанный запрос запутан, и если мне нужно поделиться скриншотом того же.

+0

Знаете ли вы, какие значения он ломает? Например, имеет ли какое-либо из исходных значений более четырех мест после десятичного числа? Я считаю, что DT_CR соответствует типам ДЕНЕГ SQL Server, которые хранят не более одной десятитысячной единицы. Можем ли мы увидеть некоторые примеры ваших данных? –

+0

Я думаю, вам нужно сделать некоторое преобразование данных перед загрузкой данных в sql-сервер – bmsqldev

ответ

0

Просьба проверить, содержат ли данные суммы символы валюты, такие как ($). Вы не можете вставлять символы валют в денежное поле (какая базовая реализация в sql-сервере равна десятичной (19,4)).

Если вы хотите вставить данные с символами валюты, сначала вставьте во временную таблицу, где поле «деньги» определено как varchar. Затем обновите это поле и удалите все символы валюты. Затем напишите еще один оператор SQL, чтобы переместить данные из временной таблицы в реальную таблицу.