RECORDLENGTH - Basic Teradata Query

Basic Teradata Query リファレンス

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

目的

この制御によって、ユーザーは、インポート、エクスポート、および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