Использование IBEScript — различия между версиями

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
(Новая страница: «'''Для чего:''' Часто наши доработки включают создание ряда дополнительных таблиц, процед…»)
 
(нет различий)

Текущая версия на 10:39, 8 апреля 2019

Для чего:

Часто наши доработки включают создание ряда дополнительных таблиц, процедур, триггеров и TMS. Для того чтобы перенести эти наработки другому клиенту(в другую базу) приходится последовательно через IBExpert. Тут есть возможность для ошибок да и процесс по времени затягивается. Есть решение использовать IBEScript для пакетного добавления данных в БД.

Что такое IBEScript:

Это приложение является значительно расширенным аналогом isql.exe (консольная утилиты предоставляющей доступ через SQL до баз Firebird). Кроме дублирования функционала isql-утилиты, IBEScript расширен специальными командами под названием IBEBlock. Количество команд переваливает за 3 сотни.

Как это работает

Рассмотрим по шагам на примере формирования выгрузки в созвездие Для работы выгрузки я использую ТМС для запуска, Несколько процедур для формирования данных и также несколько временных таблиц.

1. Заходим в IBExpert и получаем скрипт на создание таблицы

/******************************************************************************/
/***                Generated by IBExpert 08.04.2019 9:25:15                ***/
/******************************************************************************/

/******************************************************************************/
/***      Following SET SQL DIALECT is just for the Database Comparer       ***/
/******************************************************************************/
SET SQL DIALECT 3;



/******************************************************************************/
/***                                 Tables                                 ***/
/******************************************************************************/


CREATE GENERATOR GEN_SOZVEZDIE_ACTION_MOVE_ID;

CREATE TABLE SOZVEZDIE_ACTION_MOVE (
    ID                   INTEGER,
    MAP_PHARMACY_ID      DM_TEXT /* DM_TEXT = VARCHAR(250) */,
    DISTRIBUTION_ID      DM_TEXT /* DM_TEXT = VARCHAR(250) */,
    BATCH_ID             DM_TEXT /* DM_TEXT = VARCHAR(250) */,
    DOC_DATE             DM_TEXT /* DM_TEXT = VARCHAR(250) */,
    DOC_TYPE             DM_TEXT /* DM_TEXT = VARCHAR(250) */,

Сохраняем полученный скрипт в файл - SOZVEZDIE_ACTION_MOVE.sql Повторяем этот шаг для всех требуемых процедур и таблиц.

Так же выгружаем нашу ТМС - заходим в таблицу GROUPS и выгружаем поле DATA в формате hex в файл - TMS_SOZVEZDIE.hex

Все полученные таким образом файлы помещаем в отдельную папочку к примеру exp_sozvezdie.

2. Создаем скрипт для загрузки TMS в BLOB

DELETE FROM GROUPS WHERE id=19999;
SET BLOBFILE 'e:\TMS\Manager\exp_to_sozvezdie\TMS_SOZVEZDIE.hex';
INSERT INTO GROUPS (ID, PARENT_ID, CAPTION, GROUPTABLE, STATUS, INSERTDT, SYSTEMFLAG, DESCRIPTION, IMAGEINDEX, DATA, COLOR, SORTING, BASE_AGENT_ID, SID) VALUES (19999, 61, 'Выгрузка в созвездие', 'TMS', 0, '30-MAR-2019 16:54:30', 0, NULL, -1,:h00000000_7FFFFFFF, NULL, NULL, 0, NULL);
commit;

Первая строчка удаляет из БД ТМС если она уже существует

SET BLOBFILE - этой командной мы указываем где хранится наша ТМС(выгруженная как hex и БД)

INSERT INTO GROUPS - тут собственно и происходит загрузка данных обратите внимание поле в которое будет загружен файл в VALUES содержит следующую запись - :h00000000_7FFFFFFF ее не меняем это служебное значение для IBScript

3. Копируем в эту папку файл IBEScript.exe и в этой же папке создаем BAT файл.

@echo off
echo Start %time%

set db_path='localhost:E:\Clients\ЭРИС\1\ZTRADE\ztrade.fdb'
set source_path=E:\TMS\Manager\exp_to_sozvezdie\

echo Create Table,Triggers,Procedure 
for %%i in (*.sql) do (
IBESCRIPT.exe -N -D%db_path% -USYSDBA -Pmasterkey  %source_path%%%i

)
echo ***Complited***
pause

переменная db_path - содержит путь в какую базу мы будем загружать наши данные

переменная source_path - содержит путь до папки с нашими скриптами

Затем мы в цикле запускаем програvму IBEScript

IBESCRIPT.exe -N -D%db_path% -USYSDBA -Pmasterkey  %source_path%%%i

если мы используем только один скрипт (а созданиее ТМС можно поместить в конец файла со скриптом) нам можно указать в место %source_path%%%i путь до него , а так же убрать цикл.

4. После всех действий у нас будет папочка со всеми нужными скриптами и BAT файл запускающий загрузку данных в таблицу.