Введение

Выгрузка данных в PostgreSQL работает вместе с передачей накопительных данных — заказов. Осуществляется утилитами двух уровней: верхнего и нижнего.

Верхний уровень

Утилиты верхнего уровня выполняют предварительную обработку данных и вызывают утилиты нижнего уровня для выгрузки в PostgreSQL.

Начиная с версии 7.06.05 утилиты верхнего уровня размещаются в подпапке SQL. В версии 07.06.04 размещаются рядом с вызывающим модулем.

  • RefsToSQL.exe — утилита для выгрузки справочников в PostgreSQL
  • Shift2SQL.exe — утилита для выгрузки накопительных данных в PostgreSQL
  • RefsToSQL.exe — утилита для выгрузки журнала изменения справочников в PostgreSQL. 

Нижний уровень

Утилиты нижнего уровня предназначены для вызова из утилит верхнего уровня, осуществляют выгрузку в конкретный SQL сервер.

Начиная с 7.06.05 утилиты нижнего уровня размещаются рядом с утилитами верхнего уровня в подпапке SQL. В версии 07.06.04 утилита нижнего уровня размещается в подпапке SQL от утилиты верхнего уровня.

  • Data2PGS — выгрузка в PostgreSQL.

Описание конфигурационных файлов

Конфигурационные файлы необходимы только для отладки. Имя файла совпадает с именем утилиты с заменой расширения на .ini.

shift2sql.ini, refstosql.ini

[SHIFT2SQLCONF]
;включите режим сохранения логов и передаваемых файлов. В этом режиме утилита будет записывать весь прогресс и сделает копии файлов, которые были использованы для работы, например конфиг базы и загружаемый файл данных.
;значение по умолчанию = 0
;TESTMODE=1
 
;путь для сохранения логов. В этой папке будут создаваться подпапки в формате <год><месяц><денть><часы><минуты><секунды>_<идентификатор приложения>\, и в этих подпапках будет сохраняться весь прогресс тестового режима.
;значение по умолчанию = <путь к exe>\<название утилиты>files\
;TESTPATH=FOLDER FOR LOGS AND COPIES
 
;В режиме SAVERAWLOG будут создаваться файлы в той же папке в формате shift2sql.ХХХХХ.log
;в этих файлах можно будет увидеть когда был обработан тот или иной файл с данными.
;SAVERAWLOG=1
CODE

data2msq.ini

[SHIFT2SQLCONF]
;не удаляйте логи после завершения работы
;по умолчанию = 0
;SAVERAWLOG=1
;ИЛИ
;TESTMODE=1
 
 
;путь для сохранения логов
;по умолчанию = <путь к exe>\
;LOGPATH=FOLDER TO SAVE LOGS IN
;ИЛИ
;TESTPATH=FOLDER TO SAVE LOGS IN
 
;время ожидания выполнения запроса в секундах
по умолчанию = -1 (без таймаута)
;QueryTimeout=100500
 
;параметр для работы авто-тестов
;включите сохранение данных для авто-тестов и авто-тестового режима в целом
;по умолчанию = 0
;ExportScriptData=1
 
;параметр для работы авто-тестов
;указывается путь для сохранения данных, необходимых для тестирования, например конфиг подключения, список таблиц, список полей, ключевые поля
;по умолчанию = 
;ExportScriptDataPath=FOLDER TO SAVE TEST DATA
 
;параметр для работы авто-тестов
;"должен" сохранять скрипт запроса по указанному пути в файл script.txt, но судя по всему на данный момент сохраняет только самый последний кусок, а не весь скрипт целиком (видимо, не обновлялось с тех пор как была реализована разбивка скрипта)
;по умолчанию =
;ExportScriptPath=FODLER TO SAVE SCRIPT (SQL-QUERY)
 
;список таблиц, которые должны быть проигнорированы при экспорте, через запятую
;по умолчанию =
;SKIPTABLES=LOGBOOK,TABLE
 
;сохранять вызывающийся sql-запрос в файл в папке логов
;на текущий момент работает только в data2pgs
;LOGSQL=1
CODE

Настройки data2pgs идентичны data2msq за тем исключением, что на данный момент версия data2pgs отстает по ряду правок, из-за чего не работают следующие параметры: ExportScriptPath, ExportScriptDataPath.

Использование

Автоматическая работа

Для автоматической работы файл shift2sql.exe должен присутствовать в каталоге, где расположен *.exe файл сервера, осуществляющего выгрузку во внешнюю базу данных.

В версиях старше 07.04.21.289 файл присутствует в стандартной поставке, ручное обновление не требуется, если не тестируете новую версию.

Для версий ниже 07.05.04.xxx в конфигурационном файле сервера справочников добавьте в секции CONFIG опцию UseShift2SQL:

[CONFIG]
UseShift2SQL = 1
CODE

Подробнее читайте в статье Загрузка смен с помощью Shift2sql.

Ручной запуск

Для ручного запуска необходимо в командной строке или исполняемом файле составить текст согласно следующему шаблону:

shift2sql.exe "ConnectionString" "shiftsFileName" "C:\SomePath\chckconv.xml" 0 "dataload" "sql\data2msq.exe"
CODE

Всего используется 5 параметров:

  • ConnectionString
  • shiftsFileName
  • dbExportConfigFile
  • parentProcIDToWait
  • sqlDataLoadingMode.

ConnectionString

Первый параметр — ConnectionString. Это строка соединения, вида:

"Provider=SQLNCLI10.1;Persist Security Info=True;Initial Catalog=RK7xBASEUPGx20;Data Source=310-RK7-ALAN\SQLEXPRESS;User ID=SA;Password=SomeStrongPAssword"
CODE

Полная строка подключения ADO включает в себя имя пользователя и пароль.

Или параметр dataBaseConnection — строка вида

ByHandle=2888
CODE

где значением параметра ByHandle является указатель открытого временного файла. Временный файл создается с флагом FILE_FLAG_DELETE_ON_CLOSE, с bInheritHandle=true в структуре _SECURITY_ATTRIBUTES

shiftsFileName

Второй Параметр — shiftsFileName. Имя файла выгружаемой смены — shift.udb.  

Имя выгружаемого файла при необходимости выгрузить можно с полным путем, . Пример приведен для сервера MS SQL.

Или имя файла-источника данныхshiftsDataFileName 

dbExportConfigFile

Третий параметр — полный путь к файлу описания структуры chckconv.xml. Файл dbExportConfigFile с правилами преобразования данных создается по умолчанию в папке /base/. Если сервер справочников используется и для отчетов, то файл создается после первой закачки смены с использованием утилиты shift2sql.exe.

Или с помощью LOGToSQL.xml в подпапке \base\refs2sql\

parentProcIDToWait

Четвертый параметр — parentProcIDToWait.

Это идентификатор родительского процесса ОС в виде числа. 

При смерти родительского процесса shift2sql.exe тоже завершит свою работу. 

Параметр опциональный, можно не указывать.

sqlDataLoadingMode

Пятый параметр — sqlDataLoadingMode. Это режим загрузки данных в SQL, который регулирует перезапись. Может иметь значение:

  • dataover — перезапись данных: данные во всех таблицах будут сперва удалены, а затем добавлены из указанного файла
  • datasync — сверка ключей записей и штампов RECSTAMP. Добавляет, удаляет или обновляет только то, что было изменено, synchronize
  • schmover — создание структуры: все таблицы будут пересозданы, все данные будут удалены, schmmake
  • dataload — добавление данных: данные добавляются к имеющимся в таблицах. Значения, пересекающиеся по ключам, будут обновлены
  • schmsync —  создание структуры БД: существующие таблицы будут модифицированы. Опциональный — необязательный.

Путь к утилите

Шестой параметр — путь к утилите, которая будет производить непосредственную выгрузку на SQL-сервер. 

sql\data2pgs.exe — подутилита, занимающаяся выгрузкой в PostgreSQL.

При необходимости можно включить логирование в файл, указав имя файла-лога в качестве места перенаправления вывода командной строки:

shift2sql.exe "ConnectionString" "shiftsFileName" "C:\SomePath\chckconv.xml" > logs.txt
CODE

Подробнее читайте в статье Загрузка смен с помощью Shift2sql.

Обработка нескольких смен

Для пакетной обработки нескольких смен можно использовать bat-файл со следующим содержимым:

@echo start 
for %%i in (shift*.udb) do (
   echo %%i
   call "полный_путь_до_shift2sql.exe" "ConnectionString" "%%i" "полный_путь_до_chckconv.xml" >logs.txt
)
pause
CODE
Bat-файл должен лежать в одной папке со сменами!

Настройка сервера справочников

Используйте флаг DelChckconv, чтобы отключить удаление xml-конфига chckconv.xml при импорте смен.

[CONFIG]
DelChckconv = 0
CODE

Готово.