powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Import из *.cmd и из редактора команд. Результат разный.
8 сообщений из 8, страница 1 из 1
Import из *.cmd и из редактора команд. Результат разный.
    #38487379
Из среды понимает конструкцию
Код: plsql
1.
IMPORT ..... MODIFIED BY DATEFORMAT="DD.MM.YYYY" .....


На неё же в *.cmd ругается.

bat-ник:
db2cmd.exe go.cmd

go.cmd:
db2 CONNECT TO ZANAS
db2 IMPORT FROM "D:\work\sc2\data\WorkDir\Лабзова\20121121_20121122\load_Correct.csv" OF DEL MODIFIED BY DATEFORMAT="DD.MM.YYYY" TIMEFORMAT="HH:MM:SS" TIMESTAMPFORMAT="DD.MM.YYYY HH:MM:SS" CODEPAGE=1251 NOCHARDEL COLDEL; DECPT, METHOD P (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) MESSAGES "D:\work\sc2\data\WorkDir\Лабзова\20121121_20121122\log" INSERT INTO ZANAS.NPD_CORRECT (OPERATOR, PERIOD_START, PERIOD_END, DEEDTYPE, DEEDDATE, DOCDATE, ID, PAGEID, A1, A2, A3, A4, SNILS, DOC_TYPE, BRANCH, CONTENT, PATH_BRANCH, PATH_FIO, PATH_DOC_NAME, PATH_FILE_NAME)
db2 CONNECT RESET

запускаю батником cmd, ругается:

D:\work\SC2\data\WorkDir\Лабзова\20121121_20121122>db2 CONNECT TO ZANAS

Информация соединения с базой данных

Сервер баз данных = DB2/NT64 9.7.0
ID авторизации SQL = DB2ADMIN
Алиас локальной базы данных = ZANAS

D:\work\SC2\data\WorkDir\Лабзова\20121121_20121122>db2 IMPORT FROM "D:\work\sc2\
data\WorkDir\Лабзова\20121121_20121122\load_Correct.csv" OF DEL MODIFIED BY DATE
FORMAT="DD.MM.YYYY" TIMEFORMAT="HH:MM:SS" TIMESTAMPFORMAT="DD.MM.YYYY HH:MM:SS"
CODEPAGE=1251 NOCHARDEL COLDEL; DECPT, METHOD P (1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20) MESSAGES "D:\work\sc2\data\WorkDir\Лабзо
ва\20121121_20121122\log" INSERT INTO ZANAS.NPD_CORRECT (OPERATOR, PERIOD_START,
PERIOD_END, DEEDTYPE, DEEDDATE, DOCDATE, ID, PAGEID, A1, A2, A3, A4, SNILS, DOC
_TYPE, BRANCH, CONTENT, PATH_BRANCH, PATH_FIO, PATH_DOC_NAME, PATH_FILE_NAME)
SQL3192N В параметре filetmod указан неверный пользовательский формат
"DATEFORMAT", начинающийся со строки "DD".

D:\work\SC2\data\WorkDir\Лабзова\20121121_20121122>db2 CONNECT RESET
DB20000I Команда SQL выполнена успешно.

То же самое из редактора команд (-db2 в начале строчек +; в конце) работает:

CONNECT TO ZANAS;
IMPORT FROM "D:\work\sc2\data\WorkDir\Лабзова\20121121_20121122\load_Correct.csv" OF DEL MODIFIED BY DATEFORMAT="DD.MM.YYYY" TIMEFORMAT="HH:MM:SS" TIMESTAMPFORMAT="DD.MM.YYYY HH:MM:SS" CODEPAGE=1251 NOCHARDEL COLDEL; DECPT, METHOD P (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) MESSAGES "D:\work\sc2\data\WorkDir\Лабзова\20121121_20121122\log" INSERT INTO ZANAS.NPD_CORRECT (OPERATOR, PERIOD_START, PERIOD_END, DEEDTYPE, DEEDDATE, DOCDATE, ID, PAGEID, A1, A2, A3, A4, SNILS, DOC_TYPE, BRANCH, CONTENT, PATH_BRANCH, PATH_FIO, PATH_DOC_NAME, PATH_FILE_NAME);
CONNECT RESET;

------------------------------ Введенные команды ------------------------------
CONNECT TO ZANAS;
IMPORT FROM "D:\work\sc2\data\WorkDir\Лабзова\20121121_20121122\load_Correct.csv" OF DEL MODIFIED BY DATEFORMAT="DD.MM.YYYY" TIMEFORMAT="HH:MM:SS" TIMESTAMPFORMAT="DD.MM.YYYY HH:MM:SS" CODEPAGE=1251 NOCHARDEL COLDEL; DECPT, METHOD P (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) MESSAGES "D:\work\sc2\data\WorkDir\Лабзова\20121121_20121122\log" INSERT INTO ZANAS.NPD_CORRECT (OPERATOR, PERIOD_START, PERIOD_END, DEEDTYPE, DEEDDATE, DOCDATE, ID, PAGEID, A1, A2, A3, A4, SNILS, DOC_TYPE, BRANCH, CONTENT, PATH_BRANCH, PATH_FIO, PATH_DOC_NAME, PATH_FILE_NAME);
CONNECT RESET;
------------------------------------------------------------------------------
CONNECT TO ZANAS

Информация соединения с базой данных

Сервер баз данных = DB2/NT64 9.7.0
ID авторизации SQL = DB2ADMIN
Алиас локальной базы данных = ZANAS

IMPORT FROM "D:\work\sc2\data\WorkDir\Лабзова\20121121_20121122\load_Correct.csv" OF DEL MODIFIED BY DATEFORMAT="DD.MM.YYYY" TIMEFORMAT="HH:MM:SS" TIMESTAMPFORMAT="DD.MM.YYYY HH:MM:SS" CODEPAGE=1251 NOCHARDEL COLDEL; DECPT, METHOD P (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) MESSAGES "D:\work\sc2\data\WorkDir\Лабзова\20121121_20121122\log" INSERT INTO ZANAS.NPD_CORRECT (OPERATOR, PERIOD_START, PERIOD_END, DEEDTYPE, DEEDDATE, DOCDATE, ID, PAGEID, A1, A2, A3, A4, SNILS, DOC_TYPE, BRANCH, CONTENT, PATH_BRANCH, PATH_FIO, PATH_DOC_NAME, PATH_FILE_NAME)

Число прочитанных строк = 16819
Число пропущенных строк = 0
Число вставленных строк = 16819
Число измененных строк = 0
Число отклоненных строк = 0
Число принятых строк = 16819


CONNECT RESET
DB20000I Команда SQL выполнена успешно.

Я осознаю, что если формат даты привести к стандартному, можно не указывать пользовательский и всё заработает, но хотелось бы понять, почему не работает так.
...
Рейтинг: 0 / 0
Import из *.cmd и из редактора команд. Результат разный.
    #38487782
A.Panskikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Честный чайник,

кавычки в коммандном процессоре обрабатываются. Нужно найти рабочую форму или использовать db2 -f

Andy
...
Рейтинг: 0 / 0
Import из *.cmd и из редактора команд. Результат разный.
    #38487787
Честный чайник,

Если список команд нужно генерировать динамически, надежнее это делать в два этапа:
1. С помощью команд echo генерируется текст команд для командного процессора db2 с перенаправлением в файл (> и >>).
2. Созданный файл выполняется командным процессором db2 (db2 -f <имя файла>)
Такую конфигурацию проще отлаживать (разделяется этап генерации команд и их исполнения).
...
Рейтинг: 0 / 0
Import из *.cmd и из редактора команд. Результат разный.
    #38488424
Вона как... Спасибо.

Итого:

батник:
Код: sql
1.
db2cmd go.cmd

go.cmd:
Код: sql
1.
db2 -f go.txt

go.txt:
Код: sql
1.
2.
3.
CONNECT TO ....
IMPORT FROM...  <команды всякие>
CONNECT RESET



А существует какой-то менее вычурный способ выполнить последовательность команд? Какой-то одной программой, без батников.

Я *.scv и команды программно генерирую и запускаю вышеописанным способом. Но, когда db2cmd запускается через батник, не удаётся отловить окончание выполнения db2cmd. Запускаться из программы он не хочет, лезет в чужую память. Запускаю правильно, rar какой-нибудь работает, или тот же батник, а непосредственно db2cmd нет.
...
Рейтинг: 0 / 0
Import из *.cmd и из редактора команд. Результат разный.
    #38488543
Честный чайник,

Такой вариант устроит?
Код: powershell
1.
db2cmd -c -w db2 -td; -vf D:\Work\Import.db2cmd -z D:\Work\Import.log


или
Код: powershell
1.
db2cmd -w -i -c db2 -f run_backup_MYDB.db2cmd -z run_backup_MYDB.log



В файле команд db2 последней командой очень желательно ставить команду QUIT.

Ключи:
-c - выполнить команду и завершиться
-w - дождаться завершения вызываемой команды.
-i - использовать существующий процесс командной строки.

-td; - использовать точку с запятой в качестве разделителя команд.
...
Рейтинг: 0 / 0
Import из *.cmd и из редактора команд. Результат разный.
    #38608255
Воистину чайниковское продолжение вопроса образовалось:

Можно в файле, который выполняется командой db2 -f <файл с командами>, как-то разбивать длинную команду на несколько строк? А то, когда запихиваю в него длинные селекты, очень неудобно их потом править.

Просьба не пинать за тупость - ответ надо быстро, а сам быстро не сообразил.
...
Рейтинг: 0 / 0
Import из *.cmd и из редактора команд. Результат разный.
    #38608364
n&n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
n&n
Гость
Честный чайник,

командой (в том числе и многострочной) в таком файле считается все,
что заканчивается разделителем команд (; по умолчанию)

connect to db1;
create table qq1(
id integer ,
txt varchar(10)
);
connect reset;
...
Рейтинг: 0 / 0
Import из *.cmd и из редактора команд. Результат разный.
    #38608418
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
n&n,

Чтобы такой скрипт выполнился с:
db2 -f <файл с командами>
надо, чтобы в <файл с командами> в начале было:
Код: plaintext
--#SET TERMINATOR ;
Иначе надо:
db2 -tf <файл с командами>

Если надо использовать разделитель команд, отличный от ';' (например, @), то надо:
Код: plaintext
db2 -td@ <файл с командами>
либо в <файл с командами> добавить в начало:
Код: plaintext
--#SET TERMINATOR @
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Import из *.cmd и из редактора команд. Результат разный.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]