Справка Импорт CSV-файла с переменными столбцами в строке в таблицу SQL с помощью инструмента импорта или служб SSIS

Я застрял с файлом CSV с более чем 100 000 строк, который содержит изображения продуктов от поставщика. Вот подробности проблемы, я был бы очень признателен за некоторые советы, которые помогут решить эту проблему. Спасибо.

В файле есть 1 строка для каждого продукта и следующие 4 столбца. ID,URL,HEIGHT,WIDTH пример: 1,http://i.img.com,100,200

Проблема начинается, когда у продукта есть несколько изображений. Вместо одной строки на изображение файл содержит больше столбцов в одной строке.
Пример: 1,http://i.img.com,100,200,//i.img.com,20,100,//i.img. .ком,30,50

Обратите внимание, что только первое изображение имеет «http://», остальные изображения начинаются с «//».

Невозможно сказать, сколько изображений на продукт, поэтому невозможно определить, сколько всего столбцов в строке или максимальное количество столбцов.

Как я могу импортировать это с помощью мастера импорта SSIS или sql.

Также мне нужно делать это через равные промежутки времени.

Спасибо за помощь.


person user428384    schedule 21.09.2011    source источник
comment
Вы пытались связаться с поставщиком, чтобы узнать, могут ли они предоставить выписку в более удобном для использования формате? Это подозрительно похоже на вывод сводной таблицы — если они могут предоставить вам ввод вместо вывода, его может быть проще импортировать.   -  person    schedule 21.09.2011


Ответы (1)


Я не думаю, что для этого можно использовать какую-либо стандартную задачу или мастер SSIS. Вам придется написать некоторый собственный код, который анализирует каждую строку. Вы можете сделать это в SSIS, используя код VB, или вы можете импортировать файл в промежуточную таблицу, которая представляет собой всего один столбец для хранения каждой строки и выполнения синтаксического анализа в SQL. SSIS, вероятно, будет быстрее для такого рода операций.

Другая возможность — предварительно обработать файл с помощью регулярного выражения или команды поиска и замены. Попробуйте заключить список изображений в двойные кавычки, тогда вы сможете нормально импортировать весь файл, при этом цитируемая часть помещается в один столбец. Поймать начало строки должно быть достаточно легко, учитывая «http:\», по которому вы можете искать. Определение того, куда идет конечная кавычка, может быть большей проблемой.

Третьим потенциальным решением было бы заставить источник исправить данные. Даже если вы не можете получить изображения в отдельных строках (или другой файл с отдельными строками, что было бы идеально), возможно, вы сможете получить двойные кавычки, добавленные из источника как часть экспорта. Вероятно, это будет менее подвержено ошибкам, чем использование метода поиска и замены.

Удачи!

person Tom H    schedule 21.09.2011
comment
Спасибо, Том. Думаю, мне придется стиснуть зубы на этом. - person user428384; 21.09.2011