Импорт из базы данных

Компонент предназначен для импорта набора данных из СУБД. Созданный на базе данного компонента узел позволяет импортировать таблицу или представление из базы данных, либо результаты выполнения заданного пользователем SQL-запроса.

В тексте SQL-запроса можно использовать Управляющие переменные в качестве параметров и макроподстановок, что позволяет динамически формировать запрос, отправляемый на сервер.

Важно: для работы узла требуется предварительно создать подключение к базе данных и связать его с входным портом Подключение. Пример подключения и работы с БД.

Порты

Входные порты

  •  Подключение — принимает параметры подключения к базе данных;
  •  Управляющие переменные — (необязательный порт) переменными можно задать значения параметров мастера настройки.

Выходные порты

  •  Набор данных — таблица с импортированными данными.
  •  Статус выполнения — переменные выходного порта отображают текст ошибки (если ошибка возникла) и код завершения выполнения узла:
    • 0 — выполнение завершилось без ошибок;
    • 1 — ошибка при выполнении;
    • 2 — выполнение остановлено по тайм-ауту.

Мастер настройки

Мастер настройки содержит следующие параметры:

  • Подключение — отображает строку подключения к источнику данных. Нет доступна для редактирования.
  • Тип запроса — отображает какой именно тип запроса осуществляется:
    • Выбор таблицы — после установки переключателя в этом положении необходимо указать, из какого именно источника будет происходить импорт. Его нужно выбрать из выпадающего списка Таблица/Представление, в котором отобразятся все доступные варианты. В том случае, если подключение не активно, необходимо нажать кнопку Активировать.
    • SQL запрос — выбирается для настройки импорта данных при помощи языка SQL.
  • Игнорировать ошибки — при установленном флаге узел активируется успешно, даже если в процессе активации возникли ошибки.
  • Тайм-аут импорта (с) — устанавливает максимальное время на выполнение запроса к базе данных и получение данных из нее (время подключения к серверу БД в тайм-аут не входит). Тайм-аут импорта не распространяется на предварительный просмотр внутри мастера настройки. При срабатывании тайм-аута, в зависимости от этапа выполнения, останавливается выполнение запроса или заполнение выходного набора данных. Таким образом, в режиме выполнения узла «Игнорировать ошибки» выходной набор данных может оказаться частично заполненным.
  • Область настройки параметров извлечения данных из БД — зависит от выбранного типа запроса:
    • При типе запроса Выбор таблицы — в левой части области настройки Таблицы/представления отображаются таблицы подключенной базы данных. Для выбора определенной таблицы необходимо дважды нажать по ней левой кнопкой мыши, после чего в правой части отобразятся имена полей данной таблицы. Для импорта можно выбрать все поля сразу с помощью кнопки Извлекать всё или только нужные поля, проставив соответствующие флаги.
    • При типе запроса SQL запрос — в левой части Таблицы/представления отображаются таблицы подключенной базы данных и область для работы с переменными, которая по умолчанию скрыта внизу поля. В правой части задается текст SQL запроса к базе данных. При формировании запроса требуемые поля из левой части в правую можно переместить несколькими способами:
      • Перетащить мышью (Drag-and-drop) — по умолчанию перетаскивается непосредственное имя объекта, а при зажатой клавише CTRL — полное имя. Из таблицы с переменными по умолчанию перетаскивается параметр, а при зажатой клавише CTRL — макроподстановка.
      • Два раза щелкнуть левой кнопкой мыши по полю.
      • Вызвать контекстное меню нажатием правой кнопки мыши. Далее выбрать пункт Вставить имя в редактор SQL кода или Вставить полное имя в редактор SQL кода.

Кнопка Предпросмотр… позволяет оценить корректность запроса, отображая до 100 первых строк результирующей таблицы.

Применение переменных в запросах

В SQL-запросах возможно два варианта использование переменных:

  • в качестве параметра — в переменной задается определенное значение. В тексте запроса параметр записывается со знаком двоеточие, например, :var1. При этом будет учитываться тип переменной, например строка будет обрамлена кавычками. Использовать параметры можно только в секции WHERE. Выбрать этот вариант использования можно в контекстном меню переменной.
  • в качестве подстановки — в значении переменной указывается SQL-запрос или какая-то его часть. В тексте запроса ее необходимо обрамлять знаками процента, например, %condition%. Выбрать этот вариант использования можно в контекстном меню переменной.

Примечание: если конструкция подстановки заключена в кавычки, то в приоритете работают кавычки, а не подстановка.

Пример:
SELECT * FROM %tables%
WHERE
   %cond1% :TitlePart
   AND Books.year > :MinYear
   AND Publisher.Name LIKE '%Media%'

, где

имя переменной тип значение для примера
tables строка Books JOIN Publisher ON Books.PubId = Pub.Id
cond1 строка title LIKE
TitlePart строка Приключен%
MinYear целое 2005
Media строка Астра-инфо

Здесь '%Media%' не является макроподстановкой, поэтому замена на значение переменной произведена не будет.

В результате будет сформирован следующий запрос:

SELECT * FROM Books JOIN Publisher ON Books.PubId = Pub.Id
WHERE
   title LIKE 'Приключен%'
   AND Books.year > 2005
   AND Publisher.Name LIKE '%Media%'