вставка нескольких текстовых файлов

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


person Jason312    schedule 27.01.2017    source источник


Ответы (1)


Что ж, вам нужно использовать Задачу потока данных для перемещения данных из Источника плоского файла в целевую таблицу (возможно, Место назначения OLEDB). Разделены ли столбцы в вашем файле каким-либо образом? Например, с любым из этих: (;),(|) или что-то в этом роде? если это так, вы можете создать FlatFileConnectionManager и настроить его для разделения столбцов. Если нет, вам может понадобиться использовать параметр FixedWidth для разделения столбцов. Чтобы использовать OLEDB Destination, вам нужно создать OLEDB connectionManager, чтобы указать на таблицу в вашей базе данных. Я мог бы помочь вам больше, если бы у меня было больше информации о файлах, из которых вы хотите прочитать данные.

ИЗМЕНИТЬ

Ну, вы сказали в начале, что работаете с 4 файлами и 4 таблицами, поэтому вы можете создать 4 источника Flat Destination с 4 назначениями OLEDB (по 1 для каждого плоского файла). Если я вас правильно понял, эти 4 файла могут или не могут пока существовать. Поэтому, если вы знаете имена, которые получат файлы, измените свойство пакета DelayValidation на true, а затем создайте соединение с образцом текстового файла. Вы делаете это, чтобы сохранить путь к файлу. Таблицы, на мой взгляд, ДОЛЖНЫ существовать. Теперь, когда вы сказали:

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

Я знаю, что единственный способ сделать что-то подобное — запланировать выполнение вашего пакета в определенное время с помощью Задания агента SQL Server. Пожалуйста, дайте мне знать, если это то, что вы искали.

person Mokz    schedule 27.01.2017
comment
да, текстовые файлы разделены. Я хочу создать единый пакет для одновременной загрузки всех этих текстовых файлов с разделителями в разные таблицы, а затем заархивировать файлы в другое место. - person Jason312; 27.01.2017
comment
@ Jason312, тогда хорошо. Как я уже сказал, вам нужно использовать Data Flow Task, а внутри просто перетащите FlatFileSource и установите для него connectionMannager, сделайте то же самое с OLEDB Destination. Я бы предложил создать таблицу с теми же столбцами, что и один из 4, в которые вы хотите вставить. Вы найдете это руководство очень полезным - person Mokz; 27.01.2017
comment
Я новичок в ssis, но ваш способ - это просто ввод плоского файла. Моя цель этого проекта автоматизировать процесс. я хочу загружать все текстовые файлы в каждую существующую таблицу всякий раз, когда в папке есть файлы. Например, текстовый файл в таблицу A, текстовый файл B в таблицу B и т. Д. Я пытался использовать foreachloop, но он идет только к одному и тому же месту назначения. Как сделать место назначения динамическим, а также, поскольку некоторые записи дублируются, как использовать функцию поиска для связи с этими задачами? - person Jason312; 27.01.2017
comment
Хорошо, кажется, я понял, я собираюсь отредактировать свой ответ. - person Mokz; 27.01.2017