Задание значений для переменных Db2

У Optim High Performance Unload есть возможность для данного выполнения динамически задавать значения переменных Db2 и затем использовать эти значения во время обработки различных задач Optim High Performance Unload.

Для этого надо добавить параметр db2variables в файл конфигурации db2hpu.cfg, связанный с абсолютным именем файла. Его путь должен соответствовать пути существующего файла. Его содержимое должно быть списком переменных Db2 с присваиваемыми им значениями. Комментарии в этом файле можно задавать с использованием символа « # ».

Первый шаг - добавить в файл конфигурации db2hpu.cfg параметр db2variables:
db2variables=/home/i1111/mydb2vars.txt

Затем надо создать файл, определенный в параметре db2variables, и задать в нем столько записей, сколько переменных Db2 надо задать.

Когда в этом файле задается запись для переменной Db2:
  • обязательно задать значение для нее
  • переменная должная быть допустимой переменной Db2
  • заданное значение должно согласовываться с типом данных указанной переменной Db2
Вот пример такой спецификации файла. В этом примере задаются три переменных Db2. Это переменная ‘variable_int’ типа INTEGER, переменная ‘variable_varchar’ типа VARCHAR и переменная ‘variable_date’ типа DATE. Их соответствующие значения по умолчанию:
[i1058@lat111 ~]$ db2 "SELECT variable_int, variable_varchar, variable_date FROM TABLE1"       

1           2                    3
----------- -------------------- ---------- 
          1 default_value        01/01/2010 

 Выбрано записей: 1.
Файл конфигурации Optim High Performance Unload со спецификацией параметра db2variables:
[i1058@lat111 cfg]$ cat db2hpu.cfg
# конфигурация по умолчанию HPU 
bufsize=2097152 
db2dbdft= 
db2instance= 
doubledelim=binary 
netservice=db2hpudm61
db2variables=/home/i1111/mydb2vars.txt
Файл, содержащий задание значений переменных Db2:
[i1111@lat111 ~]$ cat /home/i1111/mydb2vars.txt
variable_int=10 
variable_varchar='new_value'
variable_date=CURRENT DATE
Отчет о выполнении задачи на основе оператора SQL, который обращается к этим переменным Db2:
[i1058@lat111 ~]$ db2hpu -i i1058 -f sysin
INZM031I Optim High Performance Unload for Db2 06.01.00.002.01(180702) 
         64-битная 07/02/2018 (Linux lat111 x86_64) 
INZI473I Ограничения памяти: 'неограничено' для виртуальной памяти и 'неограничено' для сегмента данных 
      ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+ 
000001 GLOBAL CONNECT TO SAMPLE;
000002 UNLOAD TABLESPACE
000003 SELECT variable_int, variable_varchar, variable_date FROM TABLE1;
000004 OUTFILE("outfile")
000005 FORMAT DEL;

INZU462I Начало шага управления HPU   : 07/02/2018 11:38:56.931. 
INZU463I Окончание шага управления HPU: 07/02/2018 11:38:57.147. 
INZU464I Начало шага выполнения HPU   : 07/02/2018 11:38:57.223. 
INZU410I Утилита HPU выгрузила строк: 1, на хост lat111, для таблицы I1058.TABLE1 в файл outfile. 
INZU465I Окончание шага выполнения HPU: 07/02/2018 11:38:57.248. 
INZI441I Утилита HPU успешно завершена: Реальное время -> 0m0.317090s 
Пользовательское время -> 0m0.251783s : родительский  элемент -> 0m0.251783s, дочерний элемент -> 0m0.000000s 
Системное время -> 0m0.046225s : Родительский процесс -> 0m0.046225s, Дочерние процессы -> 0m0.000000s 
Файл вывода, содержащий заданные для переменных Db2 значения:
[i1111@lat111 ~]$ cat outfile 
10,"new_value",20180702