目的
この制御によって、ユーザーは、インポート、エクスポート、およびstdoutへの16進数のダンプ出力に対して、現在のセッション内で処理できるレコード(行)の最大長を指定できます。
構文
次のような場合に当てはまります。
- MAX64
- レコード サイズを64,768バイトに制限します。RECORD/INDICATORモード(DATA/INDICDATAエクスポートおよびインポートを含む)では、2バイトのレコード長が使用されます。
- MAX1MB
- レコード サイズを1,024,000バイトに制限します。RECORD/INDICATORモード(DATA/INDICDATAエクスポートおよびインポートを含む)では、4バイトのレコード長が使用されます。
- DEFAULTS
- RECORDLENGTHコマンドの設定を元のデフォルト値にリセットします。
- Import/Export: 最大64
- Stdout: 最大1MB
使用上の注意
このコマンドは、stdoutに出力されるインポート、エクスポート、応答に影響します。そのため、BTEQはRECORDLENGTHコマンドの2つの設定を定義します。1つはインポートとエクスポートに固有のもので、デフォルト値はMAX64です。もう1つはstdoutに固有のもので、デフォルト値はMAX1MBです。現在のRECORDLENGTHコマンド設定を表示するには、SHOW CONTROLS RECORDLENGTHコマンドを使用します。
最大レコード サイズは、使用するSQL文と、リクエスト/応答の形式によって異なる場合があります。
ルール
- DATA/INDICDATAエクスポート ファイルには、同じサイズのレコード長が含まれている必要があります。4バイトのレコード長(MAX1MB)と混在した2バイトのレコード長(MAX64)を含むことはできません。
- レコードをインポートするときに、インポートの現在のRECORDLENGTHの設定がデータ ファイルの設定と一致する必要があります。
- 1MBの行をサポートしない、古いデータベースに接続されている場合は、MAX1MBの値は使用できません。
- インポートまたはエクスポートがアクティブになると、RECORDLENGTHコマンドは使用できません。まずIMPORT RESETまたはEXPORT RESETを発行して、インポートまたはエクスポートをそれぞれ終了する必要があります。
- SET DEFAULTSコマンドも、インポートまたはエクスポートがアクティブでない場合にのみ、RECORDLENGTHコマンド設定をデフォルト値にリセットするために使用できます。
- インポートおよびエクスポートのRECORDLENGTHコマンド設定は、IMPORTおよびEXPORTコマンドのRECORDLENGTHオプションを使用して一時的に上書きできます。
予想される動作
次のテーブルはBTEQがどのように動作するかを示し、IMPORTコマンドとEXPORTコマンド用のRECORDLENGTHコマンドとRECORDLENGTHオプションの組み合わせをすべて扱っています。
RECORDLENGTHコマンドの設定 | インポート/エクスポートのRECORDLENGTHのオプション | Stdoutの動作 | インポート/エクスポートの動作 |
---|---|---|---|
MAX64 | 未使用 | 64KB | 64KB |
MAX64 | MAX64 | 64KB | 64KB |
MAX64 | MAX1MB | 64KB | 1MB |
MAX1MB | 未使用 | 1MB | 1MB |
MAX1MB | MAX64 | 1MB | 64KB |
MAX1MB | MAX1MB | 1MB | 1MB |
DEFAULTS | 未使用 | 1MB | 64KB |
DEFAULTS | MAX64 | 1MB | 64KB |
DEFAULTS | MAX1MB | 1MB | 1MB |
例1 – RECORDLENGTH
RECORDLENGTH=MAX1MBの場合、8桁のオフセットがstdoutの16進ダンプ出力に採用されます。
.RECORDLENGTH=MAX1MB .RECORDMODE ON SELECT 'abcdefghijklmnopqrstuvwxyz'; *** Record#1. Dump Of Data: 00000000 1A00 6162 6364 6566 6768 696A 6B6C 6D6E *..abcdefghijklmn* 00000010 6F70 7172 7374 7576 7778 797A *opqrstuvwxyz*
例2 – RECORDLENGTH
RECORDLENGTHコマンドが使用されていますが、個々のインポートとエクスポートはRECORDLENGTHコマンド設定を上書きできます。以下では、最初のエクスポートでは1MBの行が許可されますが、2番目のエクスポートでは64KBの行のみが許可されます。
.SET RECORDLENGTH=MAX1MB .SHOW CONTROLS RECORDLENGTH /* Large rows allowed */ .EXPORT DATA FILE=datafile1 SELECT * FROM large_table; .EXPORT RESET /* Large rows not allowed */ .EXPORT DATA RECORDLENGTH=MAX64 FILE=datafile2 SELECT * FROM small_table; .EXPORT RESET
例3 – RECORDLENGTH
同じデータ ファイルを使用してエクスポートおよびインポートする場合、形式タイプとRECORDLENGTHの値が一致する必要があります。
/* Export large rows with INDICDATA format */ .SET RECORDLENGTH=MAX1MB .EXPORT INDICDATA FILE=onefile SELECT * FROM large_table1; .EXPORT RESET /* Import the same rows into a different table */ .IMPORT INDICDATA RECORDLENGTH=MAX1MB FILE=onefile .REPEAT * USING (col1 CHAR(30000), col2 CHAR(30000), col3 CHAR(30000), col4 CHAR(30000), col5 CHAR(30000), col6 CHAR(30000)) INSERT INTO large_table2 values (:col1, :col2, :col3, :col4, :col5, :col6); .IMPORT RESET