SqlexpПрофилиSQL / С: различия между версиями

Материал из Управление номенклатурой
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
{{DISPLAYTITLE:Профили SQL}}
{{DISPLAYTITLE:Профили SQL}}
== Назначение ==
== Назначение ==
Для чего нужна выгрузка данных через файлы SQL, когда есть API REST, XML файлы и т.п.
Для чего нужна выгрузка данных через файлы SQL, когда есть API REST, XML файлы и т.п.

Версия от 03:52, 8 июля 2023

Назначение

Для чего нужна выгрузка данных через файлы 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.

Отбор

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

База данных

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

Файлы

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

Обновление

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

Метаданные

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

Данные

Реквизиты

Синоним Имя Тип значения Описание
Код Код Строка(9) -
Наименование Наименование Строка(150) -
Родитель Родитель Справочники: Профили SQL -
Это группа ЭтоГруппа Булево -
Шаблон Шаблон Справочники: Служебные файлы Имя файла XML с шаблонов по которому будет сформирован файл с данными
Префикс таблиц ПрефиксТаблиц Строка(30) Префикс таблиц базы данных (если есть)
Узел обмена УзелОбмена Измененные объекты Узел регистрации изменении для выгрузки обновлений
Том Том Справочники: Тома файлов Том файлов в который будут записываться подготовленный пакеты. Том должен быть на сервере и с локальным доступом. Выбрать или том или каталог. Если выбрано то и другое используется Том.
Каталог Каталог Строка Каталог на стороне сервера куда будет записан сфоримрованный файл в обычном режиме или создать подкаталог для пакетной выгрузки
Имя файла ИмяФайла Строка(50) Итоговое имя файла с расширением. Если включен режим разбивки файлов по количеству объектов, к очередному файлу будет дописан индекс с его номером.
Архивировать подготовленные файлы Архивировать Булево -
Имя архива ИмяАрхива Строка(50) Имя файла архива с расширением. В который будут помещены SQL файлы и дополнительные файлы, картинки и прочее
Сброс изменений СбросИзменений Сброс регистрации изменений Режим сброса регистрации изменений объектов
Структура выгрузки СтруктураВыгрузки Хранилище значения -
Настройки Настройки Хранилище значения -
Параметры Параметры Хранилище значения -
Объектов в запросе ОбъектовВЗапросе Число(10, 0) Максималное колиечество объектов в одном запросе
Объектов в файле ОбъектовВФайле Число(10, 0) Максимальное количество объектов верхнего уровня в файле. 0 - не делить, иначе будет сформированого несколько файлов, в каждом не больше заданного количества.
Удалять ранее сформированные файлы УдалятьФайлы Булево Удалять файлы перед формированием. Для режима без пакетов.
Каждая выгрузка в отдельном подкаталоге Отдельно Булево Обязательно включить, если планируется выгрузка через пакеты.
Внешняя система ВнешняяСистема Справочники: Внешние системы Внешняя система, в которую производится выгрузка данных. Используется для ведения серий внешний кодов, доступа к API (если предусмотрен)
Количество объектов КоличествоОбъектов Число(10, 0) Количество строк данных выбираемых за один запрос. Значение = 0, все строки. Важно!!! Для корректной работы данный функции все запросы в обработчиках должны быть созданы по правилам выбра данных частями! Если вы не знаете как, либо не уверены ставить = 0!
Выгрузка дополнителных файлов ВыгрузкаДопФайлов Число(1, 0) -

Подсистемы