5.2. Параметры конфигурации, общие для приложений #
Ниже приведён пример фрагмента файла конфигурации procopy в формате YAML, содержащего параметры конфигурации, используемые как в procopy, так и в prosync:
source:
driver_name: oracle
host: введите имя хоста
port: 1521
database: введите имя бд
username: введите имя пользователя
password: введите пароль при необходимости
max_conn: 50
options:
- PREFETCH_ROWS=500
destination:
driver_name: postgresql
host: введите имя хоста
port: 5432
database: введите имя бд
username: введите имя пользователя
password: введите пароль при необходимости
max_conn: 50
options:
- sslmode=disable
tasks:
- id: tab1
table:
source_table: таблица_в_источнике
destination_table: таблица_в_приёмнике
exclude_columns:
- field4
include_columns:
- field1
- field2
- field3
- field4
column_mapping:
field1: field2
field2: field1
where: (COL1 IS NULL OR COL1 > 10) AND COL2 <> 'value'
batch_bytes: 976.6KiB
truncate: false
transform:
field1:
null_to_value: ""
field2:
values_to_null:
- "NULL"
- NULL_VAL
- INVALID
snapshot_id: null
- id: tab2
query:
sql: SELECT id, name FROM users ORDER BY id
destination_table: users_table
destination_columns:
- id
- login
batch_bytes: 976.6KiB
truncate: false
snapshot_id: null
- id: schema_task
schema:
source_schema: schema1
destination_schema: schema2
exclude_tables:
- TABLE1
include_tables:
- TABLE1
- TABLE2
- TABLE2
table_mapping:
TABLE2: main_table
batch_bytes: 976.6KiB
truncate: false
snapshot_id: nullО том, как устанавливать значения времени в параметрах конфигурации, можно узнать из Подраздела 4.3.6.
Следующая таблица описывает параметры конфигурации, которые используются как в procopy, так и в prosync:
Таблица 5.2. Общие параметры конфигурации для приложений
| Название | Описание | Значение по умолчанию | Пример |
|---|---|---|---|
source | Параметры для подключения к источнику | ||
source.dsn | DSN подключения. Если значение параметра указано, оно имеет приоритет: определяет актуальные настройки. | Для BiHA-кластера:dsn: "postgresql://db-biha-1:5432,db-biha-2:5432, db-biha-3:5432/postgres?user=user& password=password" | |
source.driver_name | Драйвер подключения. Возможные значения: oracle, postgres, parquet (хотя Parquet используется только как приёмник). | ||
source.host | Имя или IP-адрес сервера | ||
source.port | Порт подключения | ||
source.database | Имя базы данных для подключения | ||
source.username | Имя пользователя для подключения | ||
source.password | Пароль для подключения. Оставьте пустым, если пароль не требуется. | ||
source.max_conn | Максимальное число открытых подключений | 50 | |
source.options | Дополнительные параметры подключения | options: - PREFETCH_ROWS=500 - sslmode=disable | |
destination | Параметры для подключения к приёмнику | ||
destination.dsn | DSN подключения. Если значение параметра указано, оно имеет приоритет: определяет актуальные настройки. | Для BiHA-кластера:dsn: "postgresql://db-biha-1:5432,db-biha-2:5432, db-biha-3:5432/postgres?user=user& password=password" | |
destination.driver_name | Драйвер подключения. Возможные значения: oracle, postgres, parquet. | ||
destination.host | Имя или IP-адрес сервера | ||
destination.port | Порт подключения | ||
destination.database | Имя базы данных для подключения | ||
destination.username | Имя пользователя для подключения | ||
destination.password | Пароль для подключения. Оставьте пустым, если пароль не требуется. | ||
destination.max_conn | Максимальное число подключений, разрешённое для пула подключений | 50 | |
destination.options | Дополнительные параметры подключения | options: - PREFETCH_ROWS=500 - sslmode=disable | |
tasks | Список задач. Задача может быть типа Query, Schema или Table. За подробностями обратитесь к Подразделу «Типы задач». | ||
tasks.id | Имя задачи. Должно быть уникальным. Рекомендуется не изменять его между запусками задач. | ID: "task_schema_1" | |
tasks.table | Раздел для задачи типа Table. За подробностями обратитесь к Подразделу «Типы задач». | ||
tasks.table.source_table | Полное имя исходной таблицы: <схема>.<таблица>. Имена, указанные без кавычек, понимаются как регистронезависимые. | source_table: "SYSTEM"."PRODUCTS" | |
tasks.table.destination_table | Полное имя целевой таблицы: <схема>.<таблица>. Имена, указанные без кавычек, понимаются как регистронезависимые. | destination_table: "public"."products" | |
tasks.table.exclude_columns | Список столбцов, исключаемых из загрузки данных. Перечисляйте столбцы с именами, чувствительными к регистру, в точности так, как они называются в базе данных-источнике. Кавычки не требуются. Несовместим с параметром tasks.table.include_columns. | exclude_columns: - COLUMN_1 - COLUMN_2 | |
tasks.table.include_columns | Список столбцов, которые будут загружены. Перечисляйте столбцы с именами, чувствительными к регистру, в точности так, как они называются в базе данных-источнике. Кавычки не требуются. Несовместим с параметром tasks.table.exclude_columns. | include_columns: - COLUMN_1 - COLUMN_2 | |
tasks.table.column_mapping | Сопоставление имён столбцов в базе данных-источнике с именами столбцов в базе данных-приёмнике, если они различаются. Формат: «имя_в_источнике»: «имя_в_приёмнике». Указывайте столбцы с именами, чувствительными к регистру, в точности так, как они называются в соответствующей базе данных. Кавычки не требуются. | column_mapping: "COLUMN_1": "new_column_1" "COLUMN_2": "new_column_2" | |
tasks.table.where | Условие фильтрации для таблицы-источника, позволяющее ограничить количество загружаемых строк. SQL-выражение, возвращающее значение типа boolean. | where: "(COL1 IS NULL OR COL1 > 10) AND COL2 <> 'value'" | |
tasks.table.uniq_keys | Уникальный ключ, который будет использоваться для выборки. Если не задан, подходящий ключ будет выбран автоматически. | ||
tasks.table.last_row | Устаревший параметр | ||
tasks.table.index_hint | Подсказка с именем индекса, который следует использовать для индексного сканирования. В некоторых случаях фактически выбранный индекс может отличаться от указанного. | index_hint: "/+ INDEX (employees emp_department_ix)/" # Oracle index_hint: "/+ IndexScan(tableName indexName)/" # Postgres Pro index_hint: "/+ IndexScanOnly(tableName indexName)/" # Postgres Pro | |
tasks.table.disable_order_by | Отключает сортировку при выборке. Если не задан, используется глобальный параметр procopy_options. | ||
tasks.query | Раздел для задачи типа Query. За подробностями обратитесь к Подразделу «Типы задач». | ||
tasks.query.sql | SQL-запрос пользователя для задачи | sql: "SELECT id, name FROM users ORDER BY id" | |
tasks.query.destination_table | Полное имя таблицы в приёмнике: <схема>.<таблица>. Если имя схемы или таблицы указано без кавычек, oно понимается как регистронезависимое. | destination_table: "public"."products" | |
tasks.query.destination_columns | Список столбцов приёмника, в которые будут вставляться данные. Порядок имён столбцов должен соответствовать порядку в запросе. Перечисляйте столбцы с именами, чувствительными к регистру, в точности так, как они называются в базе данных-приёмнике. Кавычки не требуются. | destination_columns - id - login | |
tasks.query.destination_column_types | Типы столбцов базы данных-приёмника, в которые будут вставляться данные. Должны быть перечислены в том же порядке, что и в tasks.query.destination_columns. Используются только при миграции данных в формат Parquet. Имена типов должны соответствовать типам в базе данных-источнике. Типы Parquet указывать здесь не следует. | Для миграции PostgreSQL -> Parquet: destination_column_types: - text - integer - boolean | |
tasks.schema | Раздел для задачи типа Schema. За подробностями обратитесь к Подразделу «Типы задач». | ||
tasks.schema.source_schema | Имя схемы в источнике, которая будет загружаться. Должно совпадать с именем, указанным в базе данных. Кавычки не требуются. | source_schema: SYSTEM source_schema: BOOK.shelves | |
tasks.schema.destination_schema | Имя схемы в приёмнике. Должно совпадать с именем, указанным в базе данных. Кавычки не требуются. | destination_schema: public destination_schema: book.SHELVES | |
tasks.schema.exclude_tables | Список таблиц, исключаемых из загрузки данных. Указывайте таблицы с именами, чувствительными к регистру, в точности так, как они называются в базе данных-источнике. Кавычки не требуются. Несовместим с параметром tasks.schema.include_tables. | exclude_tables: - PRODUCTS - TOKENS | |
tasks.schema.include_tables | Список таблиц, которые будут загружены. Указывайте таблицы с именами, чувствительными к регистру, в точности так, как они называются в базе данных-источнике. Кавычки не требуются. Несовместим с параметром tasks.schema.exclude_tables. | include_tables: - PRODUCTS - TOKENS | |
tasks.schema.table_mapping | Сопоставление имён таблиц в базе данных-источнике с именами таблиц в базе данных-приёмнике, если они различаются. Формат: <имя_в_источнике>: <имя_в_приёмнике>. Указывайте таблицы с именами, чувствительными к регистру, в точности так, как они называются в соответствующей базе данных. Кавычки не требуются. | table_mapping: "source_name_tab1": "destination_name_tab1" "source_name_tab2": "destination_name_tab2" | |
tasks.batch_bytes | Ограничение на размер пакета для текущей задачи, в байтах. Если не указано, используется глобальное ограничение procopy_options.batch_bytes. | ||
tasks.truncate | Если задан, таблица (или таблицы) в приёмнике будет очищена перед загрузкой данных. Если не задан, используется глобальный параметр procopy_options.truncate. | ||
tasks.transform | Правила преобразования значений NULL в указанных столбцах. Каждое правило содержит следующие поля:
| transform: column1: null_to_value: "UNKNOWN" null_char_replace: "\n" table1.column2: # для задач типа Schema values_to_null: ["NOTSET", "notset", "NotSet"] | |
tasks.disable_index_hint | Отключает использование подсказок по индексам при формировании запросов SELECT. Если не задано, используется глобальный параметр procopy_options.disable_index_hint. | ||
tasks.window_rows | Количество строк, выбираемых за один раз. Если не задано, используется глобальное значение procopy_options.window_rows. | ||
tasks.encoder_chan_size | Размер буфера, используемого кодировщиками. Если не задано, используется глобальное значение procopy_options.encoder_chan_size. | ||
tasks.snapshot_id | Идентификатор снимка PostgreSQL/Postgres Pro. Если не задан, используется глобальное значение procopy_options.snapshot_id. | ||
tasks.enable_auto_snapshot | Если значение true, снимок создаётся в PostgreSQL/Postgres Pro и используется для получения данных. | ||
task.sub_task_rows | Количество строк в задаче для параллельного чтения из таблиц. Используется, чтобы при чтении разделить большие таблицы на подзадачи. При значении 0 разделение задачи на подзадачи отключается. | 0 |