MESSAGEOUT - Basic Teradata Query

Basic Teradata® Queryリファレンス

Product
Basic Teradata Query
Release Number
17.10
Published
2022年2月
Language
日本語
Last Update
2022-02-11
dita:mapPath
ja-JP/nnw1608578382132.ditamap
dita:ditavalPath
ja-JP/obe1474387269547.ditaval
dita:id
B035-2414
Product Category
Teradata Tools and Utilities

目的

通常は標準出力ストリームに送信される内容を、BTEQがリダイレクトするファイルの名前を指定します。

構文

次の図は、メインフレーム接続とワークステーション接続の両方のシステムの構文を示します。





次のような場合に当てはまります。

xxx
通常は標準出力ストリームに送られるデータを受け取る、z/OS JCLのDD文の名前、またはワークステーションのファイル名。
BOM|NOBOM
ワークステーション接続システムでは、Unicodeセッションで新しいMESSAGEOUTファイルの最初にBOM(バイト オーダー マーク)を挿入するかどうかを決定する。

BOMを指定すると、UTF-8またはUTF-16バイト オーダー マークが挿入されます。NOBOMを指定すると、挿入されません。 デフォルトはBOMになっています。

ファイルがすでに存在し、空でない場合には、このオプションは適用しません。 非Unicodeセッションやメインフレーム接続システムには使用しません

このオプションは、メインフレーム接続システムには適用されません。標準出力は、Unicodeセッションの場合EBCDICで書き込まれるためです。

RESET
標準出力を元のstdout/SYSPRINTストリームにリダイレクトします。これは端末画面、リダイレクトされるファイル、パイプ、または他のデバイスの場合があります。正常に終了すると、BTEQは上記のMESSAGEOUTファイルをクローズします。

使用上の注意

既存のファイルを指定した場合は、そのファイルにデータが付加されます。 新しいファイルを指定した場合は、ファイルが作成されます。 ファイル名には、システムで有効な任意のデバイス名を使用することができます。

MESSAGEOUTファイルは、次のいずれかが実行されたときにクローズされます。
  • MESSAGEOUTコマンドで別のメッセージ ファイルが指定された場合
  • MESSAGEOUTコマンドでRESETオプションが指定された場合
  • EXITまたはQUITコマンド

最後のレコードの書き込みが終了するまでは、メッセージ ファイルはクローズされません。 クローズされる前のメッセージ ファイルを読んだ場合には、最後の数レコードが欠けている可能性があります。 これらのレコードは、MESSAGEOUT、EXIT、またはQUITコマンドが実行されてクローズされるときに、書き込まれます。

ワークステーション接続システムで、-mコマンド ライン オプションを指定してBTEQを起動すると、stdioはシステム ロケールをベースにしたものになります。 そのため、MESSAGEOUTファイルにはロケール固有の文字(UTF-8またはUTF-16-8でエンコードされた文字ではなく)が含まれることになり、BOMは含まれないことになります。

MESSAGEOUTコマンドがバッチ モードで失敗すると、BTEQはエラー メッセージを出力して終了します。MESSAGEOUTコマンドが対話型モードで失敗すると、上記のMESSAGEOUTファイルが存在する場合、BTEQは引き続き標準出力をこのファイルに書き込みます。このファイルが存在しない場合、標準出力はstdout/SYSPRINTストリームに書き込まれます。

例1 – MESSAGEOUT

z/OSで、メッセージをDDNAME MYOUTにリダイレクトするためには、MESSAGEOUTコマンドを次のように入れます。

.MESSAGEOUT DDNAME=MYOUT

DDNAMEは、TSOコマンドによって事前に定義されています。例えば、次のようになります。

.TSO ALLOCATE DDNAME(MYOUT) DSNAME(YOUR.MSG.OUT) SHR

例2 – MESSAGEOUT

ワークステーション接続システムで、標準出力をファイルOUT1にリダイレクトするためには、MESSAGEOUTコマンドを次のように入れます。

.MESSAGEOUT FILE=OUT1

標準出力をstdoutストリームに復元してOUT1ファイルを閉じるには、次のコマンドを使用します。

.MESSAGEOUT RESET

例3 – MESSAGEOUT

ワークステーション接続システムで、MESSAGEOUTコマンドを使用してBTEQの出力の一部を/dev/nullに送信することで、これを破棄することができます。インポートでは、通常、インポートされたレコードごとに数行の出力が生成されるため、出力ファイルが大容量になる場合があります。/dev/nullにリダイレクトしてからRESETオプションで復元することで、標準出力を削減することができます。

スクリプト コマンド:

.MESSAGEOUT FILE=/dev/null
.IMPORT DATA FILE=mydata
.REPEAT *
USING c1 (VARCHAR(100)), c2 (VARCHAR(100)), c3 (VARCHAR(100))
INSERT INTO my_table1 VALUES (:c1, :c2, :c3);
.MESSAGEOUT RESET
SELECT 'Validate Inserts', count(*) from my_table1;
関連出力:
+---------+---------+---------+---------+---------+---------+

.MESSAGEOUT FILE=/dev/null
*** Redirecting output messages to file /dev/null
+---------+---------+---------+---------+---------+---------+
SELECT 'Validate Inserts', count(*) from my_table1;

*** Query completed. One row found. 2 columns returned.
*** Total elapsed time was 1 second.

'Validate Inserts'     Count(*)
------------------  -----------
 Validate Inserts          53285

+---------+---------+---------+---------+---------+---------+