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.dsnDSN подключения. Если значение параметра указано, оно имеет приоритет: определяет актуальные настройки. Для 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.dsnDSN подключения. Если значение параметра указано, оно имеет приоритет: определяет актуальные настройки. Для 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.sqlSQL-запрос пользователя для задачи 
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 в указанных столбцах. Каждое правило содержит следующие поля:
  • null_to_value содержит значение, в которое будут преобразовываться значения NULL в столбце при загрузке данных.

  • values_to_null содержит массив значений столбца, которые будут преобразовываться в значение NULL при загрузке данных.

  • null_char_replace содержит строку, которая будет меняться на нулевой код (\0x00, CHR(0)). Это может быть строка, содержащая один символ, более длинная строка или пустая строка.

    Для задач типа Schema, если ключи не содержат точки, по указанным правилам будут обрабатываться все столбцы с этим именем из всех таблиц. Если ключи содержат точки, первая точка будет рассматриваться как разделитель между именем таблицы и именем столбца, поэтому обрабатываться будет столбец только из одной таблицы.

    При определении таблиц и столбцов важно использовать тот же регистр, что и в базе данных-приёмнике.

 
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