powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / bat, cmd и красивый sql
9 сообщений из 9, страница 1 из 1
bat, cmd и красивый sql
    #38899471
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте всем!

Обстановка: Win Server 2008 R2 x64, DB2 WSE 9.7.6.

Ваяю тут командный файл по экспорту записей из таблицы. Командный файл запрашивает несколько параметров, которые потом подставляются в запрос. Файл exp_src.cmd выглядит так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
set aliasDB=%1
set inRA=%2
set inAYear=%3
set inAMonth=%4
set log=%5

db2 -l%log% connect to %aliasDB%

echo off

db2 -l%log% -td@ "EXPORT TO '%~dp0exp.csv' OF DEL MODIFIED BY NOCHARDEL COLDEL; CODEPAGE=1251 DECPLUSBLANK DECPT. STRIPLZEROS XMLNODECLARATION MESSAGES '%~dp0exp.msg' 
select FLD1, 
       FLD2,
       FLD3
from MY_TAB
where FLD4=%inRa%
      and FLD5=%inAYear% 
      and FLD6=%inAMonth%
order by FLD7
@"

db2 -l%log% connect reset

exit



и вызывыается из другого bat-файла как
Код: plsql
1.
2.
rem Запуск с параметрами: алиас БД, район, выплатной год, выплатной месяц, имя лог-файла
db2cmd.exe db2setcp.bat exp_scr.cmd ROS 1 2015 3 log.txt



Проблема в том, что синтаксис exp_src.cmd неправильный. А именно - строка с командой export, потому что одна команда разбита в несколько строк. Если вписать все в одну строку, то команда выполнится. Но в одной строке слишком длинно и некрасиво. Хотелось бы sql перенести по строка для наглядности.

Посоветуйте, пожалуйста, что можно сделать?

С уважением, Семен Попов
...
Рейтинг: 0 / 0
bat, cmd и красивый sql
    #38899551
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поместите сам sql в переменную, а уже ее подставьте в команду экспорта.
...
Рейтинг: 0 / 0
bat, cmd и красивый sql
    #38899589
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Semen Popov,

Добрый день.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
db2 -l%log% ""^
EXPORT TO '%~dp0exp.csv' OF DEL MODIFIED BY NOCHARDEL COLDEL; CODEPAGE=1251 DECPLUSBLANK DECPT. STRIPLZEROS XMLNODECLARATION MESSAGES '%~dp0exp.msg' ^
select FLD1, ^
       FLD2, ^
       FLD3 ^
from MY_TAB ^
where FLD4=%inRa% ^
      and FLD5=%inAYear% ^
      and FLD6=%inAMonth% ^
order by FLD7 ^
""
...
Рейтинг: 0 / 0
bat, cmd и красивый sql
    #38900125
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein, спасибо. На меленьком sql у меня еще получилось. Затем попытался по этому правилу впихнуть громадный sql (в нем много полей, join, скалярных функций, склеивания строк и т.д.) и честно говоря замучался и запутался. Так и не получилось запустить. То есть этот вариант вроде бы подходит, но при больших скриптах будет довольно трудно приводить синтаксис к рабочему варианту.

Ggg_old, спасибо. Не подскажете, как в cmd поместить многострочный скрипт (с переводом каретки и возвратом строки) в одну переменную? Ведь через set sqlString= мы наткнемся на те же проблемы.

Сейчас самы простой вариант у меня был - скрипт экспорта обернуть в отдельный файл exp.sql, а в exp_src.cmd будет вызов на исполнение этого файла db2 -l%log% -td@ -f "exp.sql" . Но в этом варианте я не могу передать в скрипт параметры.

Может тогда сначала генерить этот exp.sql через команду echo "бла-бла-бла" > exp.sql . Но пока не знаю, как одной командой echo скинуть многострочный sql в файл
...
Рейтинг: 0 / 0
bat, cmd и красивый sql
    #38900176
Semen Popov,

Зачем одной командой?
Код: powershell
1.
2.
3.
4.
echo String1 > result.txt
echo String2 >> result.txt
echo String3 >> result.txt
type result.txt
...
Рейтинг: 0 / 0
bat, cmd и красивый sql
    #38900301
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Хабаров, у меня скрипт из более, чем 30 строк. Снова вставлять множество echo и отслеживать синтаксис. Либо скрипт придется максимально ужать, пренебречь наглядностью
...
Рейтинг: 0 / 0
bat, cmd и красивый sql
    #38900318
Semen Popov,

Ну при желании можно хранить шаблон с начальными значениями вида {VarXX}, а при генерации конечного скрипта подменять начальные значения на нужные.
В windows для таких экспериментов я использую Unix-утилиты (gnuwin32), например sed.
Ну и в echo тоже нет ничего зазорного, оно работает, хотя наглядность действительно несколько страдает.
...
Рейтинг: 0 / 0
bat, cmd и красивый sql
    #38900325
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
bat, cmd и красивый sql
    #38900459
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо. Натолкнули на решение. Вот что получилось (см. вложение).

Принцип такой: Есть файл шаблона sql, где ввел условные переменные автозамены. Файл шаблона копируется в новый, затем в нем делается автозамена. Готовый файл подается на выполнение DB2. Для автозамены использую известную утилиту UVFilesCorrector.
Задача решена. Спасибо
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / bat, cmd и красивый sql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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