RECORDMODE - Basic Teradata Query

Basic Teradata Queryリファレンス

Product
Basic Teradata Query
Release Number
16.20
Published
2018年4月
Language
日本語
Last Update
2019-07-03
dita:mapPath
ja-JP/moy1512703123963.ditamap
dita:ditavalPath
ja-JP/moy1512703123963.ditaval
dita:id
B035-2414
Product Category
Teradata Tools and Utilities

目的

この制御によって、ユーザーは、データを返すSQLリクエストに応じてデータベースからデータ行を返すためにレコード モードを使用するかどうかを指定できます。返される各行にはメタデータのない生データが含まれていて、そのデータはデータベースによって返されたものと同じ表現で、クライアント システムに適したバイト オーダーで表示されます。

エクスポートがアクティブではない場合、BTEQは、選択された各行を16進数の値を使用して表わされるダンプ レコードとして提示します。

構文



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

OFF
フィールド モードであることを示す(システムのデフォルト値)。
ON
レコード モードであることを示す(コマンドのデフォルト値)。

使用上の注意

RECORDMODE設定は、デフォルトではOFFです。ONまたはOFFを指定せずにコマンドを使用すると、BTEQはRECORDMODEをONに設定します。SHOW CONTROLS RECORDMODEコマンドを使用して、現在の設定状態を確認できます。

.EXPORT DATAが指定された場合、レコード モードが自動的に設定されます。BTEQは、.EXPORT REPORTまたは.EXPORT RESETが使用されたとき、または、INDICATORMODE設定またはRECORDMODE設定をOFFに設定したときに、フィールド モードを使用するデフォルトの動作に自動的に戻ります。フィールド モードでは、データベースはすべてのデータ値を文字表現で返し、BTEQは表形式のレポートを使用して返された行を示します。

RECORDLENGTHコマンドの設定は、RECORDMODE設定がONのときにstdoutに表示される16進ダンプに影響します。RECORDLENGTH=MAX64の場合、16進数のダンプには4桁のオフセットが含まれます。RECORDLENGTH=MAX1MBの場合、BTEQは大きなレコードを処理するために8桁のオフセットを使用します。

ECHO文をTeradata SQLマクロ内で使用して、BTEQでRECORDMODEコマンドが発行されるようにできます。

行の終わり文字の相違

BTEQレポート内の行の終わりを示す文字列は、UNIXシステムとWindowsシステムとの間で差異があります。

オペレーティング システム 行の終わりインディケータ
UNIX OS \n
Windows \r\n

この文字は、各オペレーティング システムの標準の行の終わり文字です。 アプリケーションを、上に示した両方の環境で実行する場合は、その前に、それぞれの環境に合うようにアプリケーションを変更する必要があります。

レポートの数値の桁あふれ

フィールド モードでは、データ型が数値または10進数のレポート内のデータに関して返される数値のあふれは、'Error....'の代わりに'***'として報告されます。

例えば、次の問合わせでは、返される桁数が指定した形式に収まるので、正しい形式で返されます。

SELECT cast (123456 as integer format '$999,999');

結果は、次のようになります。

  123456
$123,456

次の問合わせでは、数値のあふれが星印('***...')として報告されます。

SELECT CAST (123456 as integer format '$99,999');

結果は、次のようになります。

 123456
*******

同じ問合わせをレコードまたは標識モードで実行した場合は、数値のあふれがエラーとして報告されます。

例1 – RECORDMODE

次に示すように、RECORDMODEコマンドを使用すると、データがホスト指向(レコード モード)の表現形式で返されます。

database workforce;
.set defaults
.set recordmode on
select   deptno
,deptname     from     department
order by deptno
;
.defaults
.set recordmode off
.logoff
.exit

BTEQの応答

*** Success, Stmt# 1 ActivityCount = 5
*** Query completed. 5 rows found. 2 columns returned.
*** Record#1. Dump Of Data:
00000000 0064 000E C184 9489 9589 A2A3 9981 A389  *....Administrati*
00000010 9695                                     *on*
*** Record#2. Dump Of Data: 
00000000 012C 000B C5A7 8583 40D6 8686 8983 85    *....Exec Office*
*** Record#3. Dump Of Data:
00000000 01F4 000B C595 8789 9585 8599 8995 87    *.4..Engineering*
*** Record#4. Dump Of Data: 
00000000 0258 000D D481 95A4 8681 83A3 A499 8995  *....Manufacturin* 
00000010 87                                       *g*
*** Record#5. Dump Of Data:
00000000 02BC 0009 D481 9992 85A3 8995 87         *....Marketing*

例2 – マクロによって出力されるRECORDMODE

Teradata SQLマクロでは、使用例1のコマンドは次のようになります。

ECHO '.SET RECORDMODE ON';

RECORDMODEコマンドのオプションをONにした後にフィールド モードでデータが返されるようにするためには、次のようにもう一度RECORDMODEコマンドを指定します。

.SET RECORDMODE OFF