none
Как правильно работать с файлами в SSIS при решении ETL-задач RRS feed

  • Вопрос

  • Приветствую!

    Есть типовая ETL-задача: нужно справочники импортировать в CRM. Данные поставляются в CSV-форматах, что у Микрософта популярно как "неструктурированный файл".

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

    1. Файлы, из которых необходимо извлечь данные, имеют название, условно, C:\data\Example_201409300000_064.txt, где 201409300000 и 064 — вещи периодически изменяющиеся.

    Как быть? Предварительно изменять наименование файла в ручную? Можно ли использовать переменные вида $User::Variable1 (судя по всему нет)? Или есть в возможностях среды специализированные средства.

    2. Допустим, я написал SSIS пакет, сохранил его, он даже выполнил требуемые задачи. Как при следующем обновлении менять папку (или путь к файлу)? Как это автоматизировать? И как будет решаться задача если пакет будет сохраняться на SQL-сервере (был бы поставщик SOAP-вопроса может быть и не возникло)?

    Кто в каких вопросах может помочь?

    17 ноября 2014 г. 14:08

Все ответы

  • Все ваши задачи решаются через использование параметров и управления источниками через динамические свойства и/или Script task'и.
    17 ноября 2014 г. 16:30
  • Источник "Неструктурированный файл" и Назначение "Неструктурированный файл" не позволяют путь к файлу указать из переменной среды, в этом вся загвоздка.
    18 ноября 2014 г. 8:04
  • В script task можно напрямую переопределить свойства коннекции.
    18 ноября 2014 г. 10:58
  • Ok, благодарю за поддержку! Будем разбираться.
    18 ноября 2014 г. 11:08
  • Смотрите в коллекцию Dts.Connections
    18 ноября 2014 г. 11:21
  • Не знаю, на сколько это актуально, но перечеслитель проще сделать по другому:

    1. Делаем цикл по файлам:

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

    В цикл помещаем ДатаФловТаск с нужными действиями.

    А в источнике данных в Expressions добавляем ConnectionString и сопоставляем ему выражение (на скриншоте предполагается, что переменная содержит путь к файлу):

    Имеем следующее:

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

    P.S. Хотелось бы узнать у автора, как он реализовал раоту CRM в SSIS? Просто в БД данные переноите, или используете скрипты\еще что то, гоняющие данные через Web-сервис?

    • Изменено xjomanx 14 апреля 2015 г. 9:00
    14 апреля 2015 г. 8:50