Используйте источник данных не плоского файла для динамического чтения CSV в пакете SSIS

#ssis #oledb

Вопрос:

Я уверен, что вчера видел решение этой проблемы, но сейчас я нигде не могу его найти.

У меня есть множество csv-файлов, которые я хочу импортировать в таблицы базы данных. На данный момент у меня есть около 20 различных форматов, и со временем у меня будет масса других форматов.

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

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

Идея 1 состоит в том, чтобы импортировать данные в виде запятых или канала, разделенных в промежуточную таблицу в SQL, а затем заняться разделением на другую таблицу с помощью хранимой процедуры и имеющихся у меня метаданных. Почти уверен, что знаю, что я с этим делаю.

Идея 2 основывается на том, что я мог бы поклясться, я видел на форуме вчера: я знаю, что плоский файл источника в службах SSIS не как число столбцов меняется, но я думал, что видел что-то, что вы можете открыть плоского файла (.формат CSV) через интерфейсы OLE DB для источника компонента, а затем использовать запрос, чтобы определить столбцы в нем.

Я хочу использовать свои метаданные для определения запроса для каждого из этих csv — файлов по мере их просмотра-поэтому в первый раз переменная имени файла будет «файл a», а запрос будет «выбрать col1, col2, col3», а в следующий раз это будет «файл b», а запрос будет «выбрать col1, col2» и т. Д.

Мне снилось, что ты можешь это сделать?

Если бы я не мог, кто-нибудь объяснил, как это сделать, потому что я не могу найти поставщика ole db в службах SSIS, который позволяет мне открывать csv-файлы.

Овации

Комментарии:

1. Если идея 2 существует , вам также придется иметь дело с отображением этих полей в службах SSIS. Я не поклонник использования скриптов внутри служб SSIS для подобных вещей. Я предлагаю вам следовать идее 1. Затем у вас есть один процесс приема метаданных, управляемый в стандартной таблице импорта, с одним процессом на каждое требование преобразования из этой таблицы. Вы можете использовать BCP или BULK INSERT импортировать данные и полностью отказаться от служб SSIS. Боюсь, что на данный момент я ни для чего не рекомендую SSIS.