DATABASE_WRITER
DATABASE_WRITER предназначен для выгрузки обработанной информации в базу данных и совершения изменений в базе. Позволяет выполнять несколько SQL-запросов в рамках одной транзакции, для этого выражения в атрибуте sqlQuery разделяются точкой с запятой.
Поддерживает подключение к базам MySQL, Oracle, PostgreSQL.
Подробнее про подключение к базам данных можно прочитать в разделе Соединения с базами данных.
Порты DATABASE_WRITER:
Тип порта | Номер | Обязательный | Описание | Метаданные |
---|---|---|---|---|
Input | 0 | да | Записи для загрузки в базу данных | Любые |
Output | 0 | нет | Для отклонённых записей | Такие же, как на входном порте |
Output | 1 | нет | Для возвращаемых значений | Любые |
Атрибуты DATABASE_WRITER:
Атрибут | Обязательный | Описание | Возможные значения |
---|---|---|---|
dbConnection | да | Параметры соединения с базой данных. В список параметров для подключения могут входить: database, user, password, host, port. Параметры можно указать в атрибуте конкретного шага либо в глобальных параметрах графа. |
|
sqlQuery | нет |
Запрос к базе. Обращение по имени поля производится с помощью специального символа |
|
batchMode | нет | Определяет режим записи в таблицу. Записывать сразу по несколько записей – true, по одной – false. Пакетный режим ускоряет загрузку данных в базу. | batchMode="true" |
batchSize | нет | Количество записей, которое можно отправить в базу данных за одно пакетное обновление (в одном sql скрипте). Актуально если batchMode="true". | batchSize="5" |
commit | нет | Определяет, после обработки скольких записей (без ошибок) выполняется коммит (фиксация записей в базе данных). Возможные значения -1,0,N:
| commit="10" |
maxErrorCount | нет | Максимальное количество разрешенных ошибок. При превышении этого числа ошибок граф выходит из строя. По умолчанию ошибки не допускаются. Если установлено значение -1, все ошибки разрешены. | maxErrorCount="0" |
actionOnError | нет | Действие при превышении допустимого количества ошибок maxErrorCount. Если установлено значение ROLLBACK, фиксация текущего пакета не выполняется (актуально только для Oracle). Commit для Postgres делает тоже, что и Rollback, MsSql автоматически делает Rollback. | actionOnError="commit" |
Пакетный режим и размер пакета
Пакетный режим ускоряет загрузку данных в базу данных.
Оператор возврата недоступен в пакетном режиме.
Помните, что некоторые базы данных возвращают как отклоненные больше записей, чем реально отклонено. Эти базы данных возвращают даже те записи, которые были успешно загружены в базу данных, и отправляют их через выходной порт 0 (если он подключен).
- batchMode
- batchSize
Пример. Загрузка записей из OneBridge в SQLite.
Нужно загрузить данные из OneBridge в базу данных SQLite в таблицу Tracking
, в поля client
, items
, total
.
Данные в системе:
customer | product | amount_of_purch |
---|---|---|
JazzveCoffee | Coffea arabica | 19513 |
Arabica Legasy LLC | Coffea canephora | 12735 |
BlackBean Group | Excelsa | 34010 |
Решение:
Задайте соединение с базой:
<Connection id="CONN_A" dbURL="${CONN_TYPE}://${DB_01_USR}:${DB_01_PWD}@${DB_01_HOST}:${DB_01_PORT}/${DB_01_DATABASE}"/>
Пропишите в файл задания SQL-запрос:
<Phase ...>
...
<Node id="db_writer" guiX="250" guiY="100" guiName="DatabaseWriter" dbConnection="CONN_A" type="WriterDB">
<Attr name= “sqlQuery”><![CDATA[
INSERT INTO public."Tracking" ("client", "items", "total")
VALUES ($customer, $product, $amount_of_purch)
]]></Attr>
</Node>
...
</Phase>
Чтобы вставить значения полей из системы нужно указать название полей из метаданных после знака «$».
Данные будут выгружены в базу данных, соответствующую указанному типу соединения, в таблицу Tracking.