Microsoft SSIS — загрузить простой файл (.csv) с несколькими запятыми (,) и без двойных кавычек («») — в таблицу SQL Server

У меня есть ситуация, когда наш клиент предоставил плоский файл (.csv) для загрузки в таблицу SQL Server с помощью SSIS.

Этот огромный необработанный файл .csv (около 400 000 записей) не имеет правильного формата csv, в частности, в нем нет двойной кавычки (") ни в заголовке имени столбца, ни в данных строки. См. пример ниже:

ColumnName 1, ColumnName 2, ColumnName 3,....

Z ,  342343242424  , 10.83  ,  000001001765  , 2018-12-03 , 2018-12-03 ,  ABCD  ,  **XYZ,**  ,  CA ,  001  ,  00  , ?  

(Это экземпляр строки данных с именами заголовков столбцов как Столбец 1, Столбец 2,... В этом файле с расширением .csv вообще нет двойных кавычек (").

Я использую Visual Studio 2017 для работы в SSIS.

Как видите, значение данных XYZ, желательно как XYZ, в одной ячейке; вместо этого я вижу XYZ в одной ячейке и пробел в соседней ячейке справа. (В настоящее время я отлаживаю ошибки с помощью средства просмотра данных.)

Каждая ячейка сдвигается на одну позицию вправо. В последнем столбце справа я получаю следующее: 00 , ? в одной ячейке.

На странице «Редактор диспетчера соединений с плоскими файлами SSIS — общая» я установил следующие свойства:

Format: Delimited
Text Qualifier:    none
Header row delimiter:  {CR}{LF}

Я понятия не имею, как загрузить такой неправильно отформатированный файл .csv (без двойных кавычек ("")).

Есть ли способ загрузить правильно? Может быть, изменить файл на текстовый файл или что-то в этом роде.

Мне сказали, что это файлы Cobol (Mainframe) с фиксированной шириной для каждого столбца.

Для каждого заполнителя также существует определенная ширина (т. е. пробел (включая запятую) между соседними значениями). Мне дали документ спецификации с такой информацией ниже:

Field Name           Start          Width
-----------------------------------------    
ColumnName1             1            26
FILLER                  27            5
ColumnName2             32           19
FILLER                  51            5
ColumnName3             56           21
FILLER                  77            5
.
.
.
.

Любое предложение будет оценено.


person user3812887    schedule 28.12.2018    source источник
comment
Насколько я помню, SSIS поддерживает фиксированные файлы CSV. Попробуйте проверить этот вопрос: stackoverflow.com/questions/10289640/ Я думаю, это именно то, что вы ищете.   -  person Evaldas Buinauskas    schedule 29.12.2018
comment
На странице «Редактор диспетчера соединений с плоскими файлами служб SSIS — Общие» при выборе следующего: «Формат: фиксированная ширина» я не вижу все столбцы из исходного CSV-файла. Я вижу только один столбец с именем Column0 на вкладке «Дополнительно». На вкладке «Столбцы» даже после настройки ширины строки я вижу только один столбец. Я делаю что-то неправильно, чтобы использовать свойство фиксированной ширины?   -  person user3812887    schedule 29.12.2018
comment
Вероятно, вам придется объявить эти столбцы самостоятельно вместе с их длиной.   -  person Evaldas Buinauskas    schedule 29.12.2018
comment
ОК, в понедельник отпишусь о результате. Спасибо, Эвалдас.   -  person user3812887    schedule 29.12.2018
comment
@EvaldasBuinauskas Есть ли способ добавить столбцы вручную либо в диспетчере соединений с плоскими файлами, либо в источнике неструктурированных файлов в потоке данных SSIS? Я думаю, что SSIS автоматически распознает столбцы, верно? (Мне еще предстоит попробовать то, что вы упомянули с моей стороны, но я просто хотел уточнить, есть ли у вас какая-то конкретная стратегия для этого). В понедельник возобновлю работу. Но не стесняйтесь комментировать, если у вас есть что-то на уме   -  person user3812887    schedule 29.12.2018
comment
@EvaldasBuinauskas Я знаю, что в SSRS мы можем вручную добавлять столбцы, которые столбцы набора данных не обнаруживаются автоматически.   -  person user3812887    schedule 29.12.2018
comment
Я смогу проверить это сам в следующем году, приятель. Верны ли образцы данных в вашем вопросе?   -  person Evaldas Buinauskas    schedule 29.12.2018
comment
@EvaldasBuinauskas Образец данных правильный. Но XYZ, на самом деле XYZ, за которым следует запятая, а не какой-либо астральный символ. Как-то не очень хорошо редактируется в stackoverflow, пробовал использовать Bold. Вы также можете посмотреть здесь: social.msdn.microsoft.com/Forums/en-US/   -  person user3812887    schedule 29.12.2018
comment
Я сам разместил решение в социальной ссылке msdn выше.   -  person user3812887    schedule 31.12.2018