Как написать пакетный (*.bat) скрипт для выполнения запроса Teradata с использованием BTEQ?

Ниже приведено содержимое моего script.bat:

@echo off

cd C:\Program Files\Teradata\Client\13.0\bin

bteq .LOGON server/username,password;

select date;

.LOGOFF

@echo off goto end

:end @echo exit

У меня нет проблем с входом в систему, но кажется, что bteq не может прочитать мой оператор запроса:

выбрать дату;

Он продолжает запрашивать ввод. Может ли кто-нибудь помочь мне заставить bteq прочитать и выполнить оператор запроса?

Я пробовал онлайн-решения о входном и выходном файле:

bteq <myscript.txt> mylog.log

но это тоже не сработало.


person manuel    schedule 18.11.2011    source источник
comment
Ваш пакетный сценарий — это не набор команд, которые работают точно так же, как если бы они были введены, это набор команд, которые должны выполняться непосредственно cmd.exe. Они не будут переданы подпрограммам, если вы не передадите их напрямую (в той же строке) или не запишете их в файлы и не заставите подпрограммы читать их. Попробуйте так: Запустите Пуск -> выполнить -> cmd.exe и введите select date;. Он не поймет, о чем вы говорите. Ваш cmd.exe приостанавливает выполнение вашего пакетного сценария, пока выполняется подпрограмма, а затем выполняет следующую строку (запрос), когда подпрограмма завершена.   -  person Merlyn Morgan-Graham    schedule 18.11.2011
comment
@Merilyn, так что я не могу сделать это таким образом? можете ли вы помочь мне с другими способами?   -  person manuel    schedule 18.11.2011


Ответы (2)


Вам понадобятся два файла, один из которых представляет собой пакет, а другой — команды.

Пакетный файл:

echo off
cd C:\bteq_directory\
bteq < c:\commands.txt > c:\output.txt 2>&1
@echo off goto end
:end @echo exit

Команды:

.LOGON server/username,password
select date;
.LOGOFF

ИЗМЕНИТЬ:

Убрана точка с запятой после .LOGON...

person Michał Powaga    schedule 18.11.2011
comment
Привет, Михал, спасибо за ответ, но он все еще не работает. Я получаю это предупреждение *** Warning: You must log on before sending DBC/SQL requests. - person manuel; 18.11.2011
comment
И та же команда .LOGON с теми же учетными данными в интерактивном режиме работает нормально (и запрос тоже)? - person Michał Powaga; 18.11.2011
comment
Итак, если logon работает нормально, пути и оператор select верны, я понятия не имею, что еще может быть не так. Извините :-/. - person Michał Powaga; 18.11.2011
comment
ценю твою готовность помочь, Михал - person manuel; 23.01.2013

Это немного поздно, но вот что я нашел:

Я сохраняю свой скрипт BTEQ в файле с именем BTScript.txt:

.LOGON <servername>/<username>,<password>;
.SET WIDTH 20000;
.SET separator '|';
.EXPORT FILE = C:\TEMP\testBTEQ.txt;
SELECT top 10 * ATABLENAME;
.LOGOFF
.EXIT

Настройка ширины необходима для предотвращения усечения данных, она не достигнет 20000 символов, если запись не такая длинная.

Чтобы запустить это, я выполняю (мой компьютер настроен так, чтобы я мог дважды щелкнуть файл в проводнике Windows, чтобы сделать это) в файле .bat, содержимое которого:

echo off
bteq < C:\temp\BTScript.txt > c:\temp\bteqscriptout.txt 2>&1
@echo off goto end
:end @echo exit

Второй упомянутый здесь файл будет содержать выходные данные BTEQ.

person Benjamin James    schedule 13.01.2017