Профили SQL

Материал из Сервисная система
Перейти к навигации Перейти к поиску

Профили с настройками формирования пакетов выгрузки данных в формате текстовых файлов с SQL запросами.

Назначение

Для чего нужна выгрузка данных через файлы SQL, когда есть API REST, XML файлы и т.п.

Совместимость

СУБД под формат которых генерируются запросы:

  • MySQL;
  • MariaDB

Действия

Стандартные действия с профилем SQL.

Структура

Настройка структуры формируемых файлов.

Состоит из:

  • Виды данных - список и настройка выгружаемых видов данных (список слева формы);
  • Таблицы - список таблиц выбранного вида данных. Таблицы внешней базы данных (список справа, сверху);
  • Поля - список полей выбранной таблицы, выбранного вида данных. Поля внешней таблицы внешней базы данных (список справа, снизу);
  • Дополнительные запросы - дополнительные SQL запросы.

Виды данных

Таблица с настройками видов выгружаемых данных. Настраиваем свойства источника, какие виды данных и с какими параметрами будут переданы в выгрузку.

Выбран
Вид данных выбран для выгрузки. Отключенная строка не выгружается.
Вид данных
Название вида выгружаемых данных.
Узел обмена
Галочка, указывает на то, что выбранный модуль выгрузки содержит запрос с изменениями данных, по данным Узла обмена.
Выбор данных \ Обработка
Модуль выбора данных. Файлы SQL формируются по заданной структуре, в соответствии с требованиями базы данных внешней системы, но на нашей стороне данные могут быть заменяемыми.

Такой подход, используется для того, что бы отделить структуру получаемых данных, от источника, что дает ряд преимуществ:

  1. Гибкость настройки - возможность сменить способ выбора исходных данных, на уровне настройки профиля;
  2. Удобство доработки - многие решения подобных задач, представляют общее целое, есть один модуль внутри которого генерируются все виды данных. Задача, изменить выгрузку остатков, например к реальному складу добавить остатки поставщиков, которые мы грузим из прайс-листов. Пришлось бы мало того, что искать где в модулей именно эти данные, еще и после изменения модуль стал бы доработанным и обновлять его уже проблема. При данном подходе у нас все виды данные отдельно. Мы разрабатываем отдельный, небольшой модуль выбора остатков, регистрируем в системе, затем выбираем его в профиле выгрузки, вместо типового, при этом не трогаем логику основного модуля. Отдельный модуль по сути это свой запрос данных;
  3. Производительность - ряд видов данных, зависит от особенностей учета в нашей системе, если делать что то универсальное, получится сложный запрос, да он будет удовлетворять большинству условий, и через дополнительные параметры менять результат, но нам придется жертвовать скоростью, ради гибкости. При модульном подходе, мы под каждый случай делаем модуль индивидуально, в итоге получится несколько модулей вместо одного, но зато каждый будет с более легким запросом, в нем не будет данных которые не пригодятся, значит работать эта выборка будет быстрее и с меньшей нагрузкой на систему.
Выбор данных \ Настройка
Настроенный источник данных обработки выбора. Позволяет настроить фильтры и параметры запроса выбора данных индивидуально, для строки вида данных, профиля выгрузки. Если настройка не выбрана используются общие фильтры и общие параметры, в большинстве случаев этого достаточно, пригодится для тонкой настройки.

Таблицы

Список с настройками структуры запросов SQL отправляемых в удаленную систему, в разрезе выбранного вида данных. В зависимости от комбинации следующих настроек:

  • Выгрузит - выгрузить данные;
  • Обновить - обновить данные;
  • Очистить - очистить данные.

Запросы SQL формируются по следующим правилам:

Выгрузит
Загрузить только новые данные, не трогая существующие.
  • INSERT IGNORE INTO ИмяТаблицы, заполняем данные новыми значениями, игнорируя существующие записи по первичному ключу.

Такой режим позволит выгрузить новые данные, но не менять уже существующие'. На случай, когда важно сохранить изменения данных созданные на стороне удаленной системы. Данные мы сохраняем, выгружаемые изменения игнорируем. Все выгружаемые изменения игнорируем, только новые данные добавляем.

Очистить + Выгрузит
Очистить текущие данные и записать выгруженные. Использовать для полной выгрузки, когда необходимо не просто записать новые данные но и удалить не актуальные, при этом какие данные не актуальные мы не знаем, их больше нет, и поэтому нет в выгрузке. Формируем запросы:
  • TRUNCATE TABLE ИмяТаблицы, либо DELETE FROM ИмяТаблицы, с заданным WHERE если не допустима полная очистка (настраивается в шаблоне выгрузки) - чистим все данные;
  • INSERT IGNORE INTO ИмяТаблицы, заполняем данные новыми значениями.

Обновить в данном случае не может использоваться, так как мы чистим все данные перед загрузкой, и обновлять будет нечего

Выгрузит + Обновить
Выгрузить новые и обновить измененные данные. Использовать для частичной выгрузки обновлений (новые и измененные данные).
  • INDERT INTO ИмяТаблицы ON DUPLICATE KEY UPDATE Список обновляемых полей, добавляет новые данные, а существующие обновляются по выгруженным данным.
Описание
Описание назначения таблицы во внешней системе.
Таблица
Имя таблицы в базе данных внешней системы.

Поля

Настройка полей выбранной таблицы, выбранного вида данных.

Выгрузить
Включить поле в SQL запрос выгружаемых данных.
Обновить
Включить поле в SQL запрос обновляемых данных, в часть запроса ON DUPLICATE KEY UPDATE.

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

Ключевое
Признак, что поле является первичным ключе. Менять через профиль нельзя, только через изменение шаблона.
Описание
Описания назначения поля.
Поле
Имя поля в таблице базы данных внешней системы.
По умолчанию
Значение поля по умолчанию, еще не предусмотрено в запросе источника данных, либо для конкретной строки данных не заполнено.

Только для просмотра, настраивается через шаблон выгрузки.

Дополнительные запросы

Любые SQL запросы, добавляемые в пакет выгрузки:

  • Перед выгрузкой - добавляемые для данных выбранной таблицы, перед основными запросами (список справа, снизу);
  • После выгрузки - добавляемые для данных выбранной таблицы, после основных запросов (список справа, снизу).

Пример, после выгрузки Заполнить расчетные данные, выгружаем данные, в том числе группы товаров, в котором есть поле Количество товаров, при выгрузке рассчитать не можем, это может быть выгрузка обновлений. Пишем SQL запрос, который рассчитает по каждой группе количество товаров и обновить данные в таблице группы.

Пример, Обновить данные через временные таблицы. Задача обновить цены на 10000 товаров. Перед загрузкой создаем временную таблицу CREATE TEMPORARY TABLE с ценами, заполняем, После загрузки пишем запрос который из временной таблицы выполнить SELECT в паре с UPDATE, такой подход отработает в несколько раз быстрее чем выполнять отдельно 10000 отдельных запросов UPDATE.

Отбор

Настройка общих фильтров выбора данных.

База данных

Общие свойства локальной и внешней базы данных.

Файлы

Настройка правил формирования файлов выгрузки.

Обновление

Настройки использования Планов обмена, при выгрузке обновлений данных.