Это старая версия документа.


database

Добавляет возможность работы с базами данных через JDBC подключение. На текущий момент поддерживаются следующие СУБД:

  • Firebird

Данный модуль предназначен для использования другими модулями:

Данный модуль требует включения в задачу.

Внимание!

Модуль database должен работать в одной задаче с использующими его модулями.

plugin.database:
  enable: on

  module.db:
    enable:      on
    type:        firebird
    dbname:      /home/denis/asutp/promauto/db/fb25/SHPMSC/SHPMSC.FDB
    recon_s:     5
    timeout_s:   10

    host:     localhost
    port:     3050
    user:     sysdba
    password: masterkey

    properties:
      encoding: WIN1251

    startups:
      - dbscr/extra.dbscr.yml:
          schema: mscz4
          table: tbl
 
      - dbscr/extra.dbscr.yml
type - Тип сервера СУБД. Возможные значения: 'firebird'
dbname - Имя базы данный
recon_s 10 Интервал переподключения при потере связи
timeout_s 10 Тайм-аут подключения и ответа сервера
host localhost адрес сервера
port порт сервера, значение по умолчанию зависит от типа сервера:
3050 firebird
user - Имя пользователя на сервере
password - Пароль пользователя
properties - Дополнительные параметры подключения, специфичные для СУБД
startups - Список файлов с dbscr-скриптами, которые будут выполняться при подключении. Дополнительно можно произвольно указать любые параметры, которые будут переданы скрипту.

dbscr

Dbscr - сокращение от «database script», далее по тексту в разделе «скрипт». Скрипт предназначен для работы с содержимым баз данных без написания программного кода. Скрипты содержаться в yaml-файлах, которые могут располагаться:

  1. непосредственно на диске
  2. в jar-файле плагинов, модули которых используют модуль database

В одном файле допустимо иметь более одного скрипта. Для идентификации начала скрипта имя скрипта содержит префикс dbscr.. Пример файла, содержащего два скрипта:

dbscr.first:

     - if not has_table({schema}, person)
     - do create sequence {schema}SQ_PERSON_ID
     - do create table {schema}PERSON (
              ID integer not null primary key,
              ISGROUP smallint default 0,
              NAME varchar(128),
              DELETED smallint default 0
            )
     - do create trigger {schema}PERSON_BI active before insert position 0 on {schema}PERSON
            as
            begin
              if( NEW.ID is NULL) then
                NEW.ID = next value for {schema}SQ_PERSON_ID;
            end
 

dbscr.second:
#     - if not has_schema(msc)
 
     - if not has_domain({schema}, dm_myint1)
 
     - do create domain {schema}dm_myint1 as integer not null
 
 
 
     - if not has_table({schema}, myreader)
 
     - |
       do create table {schema}myreader (
             id integer,
             name varchar(30)
           )
     - |
       do create table {schema}myreader_types (
             id integer,
             typename varchar(30)
           )
 
 

     - if not has_column({schema}, myreader, info)
 
     - do alter table {schema}myreader 
            add info varchar(30) default 'n/a'

Скрипт - это список действий, которые выполняются в описанной последовательности. Действия подразделяются на условия if и команды do. Если при выполнении if результат положительный, то все последющие do будут выполнятся, пока не будет достигнут следующий if.

if

Формат записи:

  - if [not] function([args])

not - инверсия результата

function - функция проверки. Список доступных функций с параметрами:

  • has_schema(<schema>)
  • has_domain(<schema>, <domain>)
  • has_table(<schema>, <table>)
  • has_column(<schema>, <table>, <column>)
  • has_constraint(<schema>, <table>, <constraint>)
  • has_index(<schema>, <index>)

do

Формат записи:

  - do sql

sql - один sql-запрос, не возвращающий результат

параметры скрипта

Скрипту можно передавать параметры, которые в скрипте заключаются в фигурные скобки. Значения параметров задаются в секции startups конфигурации модуля, либо в программном коде другого модуля, использующего модуль database.

При загрузке скрипта выполняется поиск и замена всех параметров, включая фигурные скобки, на их значения. Если значение не указано, то используется значение пустая строка.

Исключением является параметр {schema}, который подставляется вместе с разделителем. Например, {schema}{table} со значениями myschema и mytable для firebird будет преобразовано в myschema_mytable, или для postgresql в myschema.mytable.

Команды

Далее m обозначает название модуля.

sql

m:sql expression

Выполняет произвольный sql-запрос, например:

db:sql select * from modules

exec

m:exec scrfile [prm=val ...]

Выполняет все dbscr-скрипты, содержащиеся в файле scrfile, с заданными параметрами. Например:

db:exec wessvr.debug.yml schema=s1 table=tbl1

firebird

Для работы с firebird необходимо использовать версию 3.0 и выше. С более ранними версиями тестирование не проводилось.

После установки firebird сервера нужно добавить параметр в файл firebird.conf:

WireCrypt = Enabled
doc/jroboplc/modules/database.1535598800.txt.gz · Последние изменения: 2018/08/30 06:13 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0