LoginSignup
1
1

More than 3 years have passed since last update.

Bteq概要

Last updated at Posted at 2019-05-04

Teradataの日本語情報があんまりないので、
連休中にドキュメント読んだ内容をまとめようと思います

まずはBteq概要
ドキュメントはこちら

ところどころピックアップなのと、動作確認しているわけではないので解釈違いがあるかも…

Each command must be preceded by a period '.' otherwise BTEQ will assume that it is an SQL request and submit it to the Teradata Database.
.始まりの場合はコマンドとして認識され、それ以外はSQLリクエストとしてTeradataデータベースに送信される

.HELP BTEQ
.LOGON mydbs/myid;
.SET SIDETITLES ON; .SET FOLDLINE ON ALL
SELECT DATE;

この場合最初3行はBteqコマンド。3行目については2つのコマンドを含んでいる状態になる。
4行目は.始まりじゃないので、SQLリクエストステップになる

Constructing an instruction with a mix of commands and an SQL request is not supported. Furthermore, there are some commands which either must be the only step in an instruction or must be a last step. For example, the LOGON and OS commands can only be a last step within a multistep instruction.

コマンドとSQLを組み合わせるのは不可
※多分selectの結果を使ってコマンド実行とかはできないってことだと思う
さらに命令群中に1つだけしか実行できないものや、最終ステップでないといけないコマンドもある
例えばLOGONとOSコマンドは最終ステップでなければいけない
※最後の行がいまいちわからなかった…
logonは最初のステップでないといけない or logoutは最終ステップでなければいけない、ではなくだろうか…
英語力に自信なくてわからないけど、そういうのがあるっていうのはわかるのでいったん置いておく

A trailing semicolon should be used on every step. Although it is optional for a last command step, it is generally required for an SQL request. The only exception is when a semicolon is omitted for an SQL request submitted in batch mode as the last instruction of a script.

どのステップでも文末のセミコロンは必要
最終コマンドステップは任意だが、一般的にSQLリクエストでは必要

* 通常、コマンドは基本的に最終になるのでいらないと思われる
.HELP BTEQ
.LOGON mydbs/myid

バッチモードで起動したときの最終命令部に限ってはセミコロンの省略が可能

* バッチモードの場合、コマンドのセミコロンは必要
.SET SIDETITLES ON;
.SET FOLDLINE ON ALL;

* クエリも最後じゃない場合は必要
SELECT DATE;

* 最後のクエリだけはセミコロンを省略できる 
SELECT DATE

文末のセミコロンは基本つける。最後のコマンドやバッチモードのクエリの場合は不要
(だけど場合に応じて外すとかはちょっと面倒なので、基本的に付けるようにしようと思う)

Command input may also be provided to BTEQ by using the SQL ECHO statement either directly or as part of an executed SQL macro. For example:

ECHO '.HELP BTEQ';

ECHO コマンド で表示できるよってことらしいけど、使いどころはわからない…

複数のコマンドを1行で書く場合の利点については、一応以下のような記述があって

Fewer trips are needed to accomplish ECHO-ing of BTEQ commands. Depending on use case, this could boost performance.
Fewer batch mode result blocks will be created making the resulting stdout/SYSPRINT file smaller. This may also make those results easier to read.

パフォーマンスの向上に寄与する可能性がある、ということらしい

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1