Загрузка смен с помощью Shift2sql
1. Общее
1.1. Предназначение
1.1.1. Утилита (shift2sql.exe и её переименованные копии) заменяет собой обычный механизм выгрузки данных в SQL (в обычном режиме выгрузкой занимается сам сервер справочников/отчетов).
1.1.2. При настройках, описанных ниже, выгрузка пойдет автоматически с использованием утилиты, что позволит разгрузить сервер и ускорить процесс.
1.1.3. Ручной режим запуска утилиты нужен только для экспериментов и/или массовой загрузки файлов смен в другую базу. Т. е. все остальные механизмы остаются теми же (обрабатываются файлы из incoming, используется та же самая БД SQL, которую использует сервер отчетов и т. д.). Изменяется только механизм передачи в БД SQL. Всё, что Вам необходимо сделать - внести изменения в .ini файл и перезапустить сервер. Дальше все будет работать в автоматическом режиме.
1.2. Преимущества утилиты
1.2.1. Не нагружает *.exe сервера(refsrv.exe или rkReportsServer.exe)
1.2.2. Можно модифицировать алгоритм выгрузки, не затрагивая сервер
1.2.3. Можно запускать параллельно несколько процессов загрузки данных
1.2.4. Можно использовать память, не отнимая её у сервера
1.2.5. Утечки памяти не так критичны
1.3. Виды утилит
1.3.1. В современных версиях RK7 имеются три копии описанного файла приложения, которые переименованы:
refsToSQL.exe - для выгрузки справочников
shift2sql.exe - для выгрузки накопительных данных
logsToSQL.exe - для выгрузки журнала
1.4. Алгоритм работы
1.4.1. Приложением создаются копии входных наборов данных.
1.4.2. Переносит данные с учетом разного рода проверок в наборы данных в памяти.
1.4.3. Затем переносит данные из памяти в MS SQL.
1.5. Условия
1.5.1. Использование утилиты возможно в версиях сервера справочников/отчетов не ниже 7.4.21.265. Если версия ниже - необходимо обновить сервер, занимающийся выгрузкой во внешнюю БД (соответственно, может потребоваться обновление вышестоящих серверов).
1.5.2. С версий 7.5.4.0 shift2sql включен по умолчанию, т.е. в ini файле не нужно производить дополнительных настроек.
2. Использование утилиты
2.1 Автоматически
2.1.1. Файл (shift2sql.exe) должен присутствовать в каталоге, где расположен *.exe файл сервера, осуществляющего выгрузку во внешнюю БД.
Внимание: в версиях старше 7.4.21.289 файл присутствует в стандартной поставке, ручное обновление не требуется (только если не тестируете новую версию).
2.1.2. В ini файле сервера отчетов/справочников (в зависимости от используемого сервера) следует добавить в секции CONFIG опцию UseShift2SQL(для версий ниже 7.5.4.xxx):
[CONFIG]
...
UseShift2SQL = "1"
...
2.2 Ручной
2.2.1. Для ручного запуска необходимо в командной строке или исполняемом файле составить текст согласно следующему шаблону:
MS SQL | shift2sql.exe "ConnectionString" "shiftsFileName" "X:\SomePath\chckconv.xml" |
MS SQL (прим 2) | shift2sql.exe "ConnectionString" "shiftsFileName" "X:\SomePath\chckconv.xml" 0 "dataload" "sql\Data2MSq.exe" |
PostgreSQL | shift2sql.exe "ConnectionString" "shiftsFileName" "X:\SomePath\chckconv.xml" 0 "dataload" "sql\Data2pgs.exe" |
shift2sql.exe "ConnectionString" "shiftsFileName" "C:\SomePath\chckconv.xml" 0 "dataload" "sql\data2msq.exe"
Всего используется 6 параметров, имена параметров используются в логах, доступ к параметрам по номерам:
1 | ConnectionString | Строка соединения, вида
| ||||||
2 | shiftsFileName | Имя файла выгружаемой смены (shift.udb) С полным путём, если это необходимо, имя выгружаемого файла. Пример приведен для сервера MS SQL. С полным путём, если это необходимо или имя файла-источника данных shiftsDataFileName | ||||||
3 | dbExportConfigFile | Полный путь к файлу описания структуры chckconv.xml. Данный файл с правилами преобразования данных, создается по умолчанию в папке /base/ (в случае использования сервера справочников для отчетов) после первой закачки смены с использованием утилиты (shift2sql.exe) или также LOGToSQL.xml в подпапке \base\refs2sql\ | ||||||
4 | parentProcIDToWait | Идентификатор родительского процесса ОС. Это число. При смерти родительского процесса shift2sql.exe так же завершает свою работу. Не обязателен | ||||||
5 | sqlDataLoadingMode | Режим загрузки данных в SQL , регулирует перезапись. Может иметь значение:
| ||||||
6 | LowLevelExe | Путь к утилите нижнего уровня, которая будет производить непосредственную выгрузку на sql-сервер. На текущий момент поддержаны два сервера:
|
2.2.2. При желании можно включить логирование в файл, указав имя файла-лога в качестве места перенаправления вывода командной строки:
shift2sql.exe "ConnectionString" "shiftsFileName" "C:\SomePath\chckconv.xml" > logs.txt
2.3. Для пакетной обработки нескольких смен можно использовать bat-файл со следующим содержимым:
:: Batch import of shift files
:: a.glazunov@rkeeper.ru
:: 27.10.2024
@echo off
:: The path to the r_keeper folder containing shift2sql.exe
set dir_win=d:\UCS\INST7.7.0.x\bin\win\
:: The path to the folder containing the shift files
set dir_shifts=D:\UCS\169283\
:: Shift File Mask
set mask_shift_files=*.udb
:: The path to chckconv.xml
set path_chckconv=..\..\base\chckconv.xml
:: MSSQL Connection String
set SQLConnectionString=Provider=SQLOLEDB.1;Persist Security Info=True;Initial Catalog=test3;Data Source=192.168.1.150, 1419;User ID=sa;Password=123
Pushd %dir_win%
@echo start
for %%i in (%dir_shifts%%mask_shift_files%) do (
echo import %%i
call "shift2sql.exe" "%SQLConnectionString%" "%%i" "%path_chckconv%" >> %dir_shifts%res_shiftsimport_logs.txt
)
echo Script execution completed
pause
Для указания в скрипте пути к файлу chckconv.xml, предварительно настройте его сохранение: как это сделать, описано в следующей главе.
Генерация файла chckconv.xml
По умолчанию файл chckconv.xml создается при импорте смены и по окончанию импорта удаляется.
Чтобы файл не удалялся:
- Откройте rk7srv.ini
В секции [CONFIG] параметру DelChckconv выставьте значение 0
[CONFIG] DelChckconv=0
CODE- Перезапустите сервер справочников и выполните импорт смены.
По умолчанию файл сохраняется в папку базы (base) с именем в формате 'chckconv-%d.xml'.