Каков наилучший способ загрузки различных файлов CSV в разные таблицы SQL Server с использованием служб SSIS?
Должен ли я повторно использовать один и тот же Диспетчер соединений с плоскими файлами или мне следует установить отдельный Диспетчер соединений с плоскими файлами для каждого импортируемого файла?
Описание:
У меня есть 30 файлов CSV с различной структурой, и мне нужно импортировать эти файлы в базу данных SQL Server.
В настоящее время я использую отдельный диспетчер соединений с плоскими файлами для каждого источника плоских файлов. Затем поместите данные в базу данных SQL Server, используя пункт назначения OLEDB.
Должен ли я использовать тот же диспетчер соединений с плоскими файлами?
Можете ли вы вести меня - как это сделать? Любые ссылки будут полезны.
3 ответа
Поскольку структура ваших файлов отличается, вы должны использовать отдельные соединения. Это позволяет правильно определять имена столбцов, размеры и типы данных для каждого типа файлов.
Вместо создания 30 соединений с плоскими файлами просто используйте один внутри контейнера цикла по каждому элементу, передавая выражение для имени файла.
Чтобы решить проблему, связанную с тем, что ваши CSV-файлы находятся в разных форматах, при создании соединения с плоскими файлами выберите пунктирное право, а не разделитель, при этом каждая строка в файле будет обрабатываться как один очень широкий столбец, а не как несколько полей (убедитесь, что этот столбец сделан достаточно широк для обработки ваших файлов).
Затем вы можете отправить выходные данные вашего источника плоских файлов в компонент Script, в который вы можете поместить всю логику для обработки ваших файлов. Используйте Regex или split для преобразования каждой строки обратно в поля, и тогда у вас есть все возможности C# для обработки каждой строки. Компонент Script также может иметь несколько выходов, так что вы даже можете использовать его как условное разбиение.
Это может показаться немного больше работы (зависит от того, как ваши файлы и как вы их обрабатываете), но в конечном итоге меньше движущихся частей.
Я думаю, что вы можете использовать MultiFaltFile
в качестве диспетчера подключения источника. Используя это вы можете выбрать несколько файлов одновременно.
Смотрите ссылку ниже:
http://www.sqlservergeeks.com/sql-server-import-multiple-files-in-ssis-using-multi-flat-file