3.6.8.5. TEXTTABLE
TEXTTABLE 関数は、文字の入力を処理して表形式出力を生成します。固定されたファイルフォーマット解析と、ファイルフォーマットの解析の両方を提供します。関数自体はプロジェクトの列を定義します。TEXTTABLE 関数は暗黙的にネストされたテーブルで、FROM 句内で使用できます。
用途
TEXTTABLE(expression [SELECTOR string] COLUMNS <COLUMN>, ... [NO ROW DELIMITER | ROW DELIMITER char] [DELIMITER char] [(QUOTE|ESCAPE) char] [HEADER [integer]] [SKIP integer] [NO TRIM]) AS name
TEXTTABLE(expression [SELECTOR string] COLUMNS <COLUMN>, ... [NO ROW DELIMITER | ROW DELIMITER char] [DELIMITER char] [(QUOTE|ESCAPE) char] [HEADER [integer]] [SKIP integer] [NO TRIM]) AS name
ここで、<COLUMN>
COLUMN := name (FOR ORDINALITY | ([HEADER string] datatype [WIDTH integer [NO TRIM]] [SELECTOR string integer]))
COLUMN := name (FOR ORDINALITY | ([HEADER string] datatype [WIDTH integer [NO TRIM]] [SELECTOR string integer]))
パラメーター
- expression
- 処理するテキストコンテンツ。文字大きなオブジェクト(CLOB)に変換できます。
- セレクター
複数のタイプの行が含まれるファイルで使用されます(例: order ヘッダー、詳細、概要)。TEXTTABLE SELECTOR は、出力に追加する行を指定します。一致する行はセレクター文字列で開始する必要があります。列区切りファイルのセレクターの後に列区切り文字が続く必要があります。
TEXTTABLE SELECTOR が指定された場合、列の値に SELECTOR を指定することもできます。列 SELECTOR 引数は、指定した SELECTOR 接頭辞が付いた直近のテキスト行を選択し、指定された 1 ベースの整数の位置(セレクター自体を含む)の値を選択します。指定の行を持つそのようなテキスト行や位置が存在しない場合は、null 値が生成されます。SELECTOR 列は、固定幅解析では有効ではありません。
- 行区切り文字なし
- 固定の解析で、改行行区切り文字があることを想定すべきではないことを指定します。
- 行区切り文字
- 行区切り文字 / 改行を別の文字に設定します。デフォルトは改行文字です。キャリッジリターンの改行を 1 文字として処理するための組み込み処理機能を使用する。ROW DELIMITER が指定された場合、カリッジリターンには特別な対応はありません。
- DELIMITER
-
使用するフィールド区切り文字文字を設定します。デフォルトは
、
です。 - QUOTE
-
フィールド値をラップするために使用される引用符、または修飾子を設定します。デフォルトは
「
です。 - ESCAPE
-
引用符が使用されていない場合に使用するエスケープ文字を設定します。これは、区切り文字や改行文字が先頭文字でエスケープされる場合に使用します(例:
\
)。 - ヘッダー
- 列名が発生するテキスト行番号(改行ごとにカウント)を指定します。列の HEADER オプションが指定された場合、これは予想されるヘッダー名として使用されます。ヘッダーの前にある行はすべてスキップされます。HEADER が指定されている場合は、ヘッダー行を使用して、大文字と小文字を区別しない名前が一致する TEXTTABLE 列の位置を判断します。これは、列のサブセットのみが必要な状況で特に便利です。HEADER 値が指定されていない場合、デフォルトは 1 に設定されます。HEADER が指定されていない場合、列はテキストの内容と位置に一致することが予想されます。
- SKIP
- コンテンツを解析する前にスキップするテキスト行の数(新しい行をすべてカウント)を指定します。HEADER は SKIP で指定できます。
- FOR ORDINALITY
- 整数として入力され、1 ベースの項目番号を値として返します。
- WIDTH
- 列の固定幅の長さ(バイト単位ではなく)を指定します。デフォルトの ROW DELIMITER では、CR NL シーケンスは単一の文字としてカウントされます。
- トリムなし
- TEXTTABLE に指定すると、すべての列およびヘッダーの値に影響します。NO TRIM が列に指定された場合、固定または非修飾テキストの値は先頭および末尾の空白をトリミングされません。
構文ルール
- 幅が 1 つの列に指定される場合は、すべての列に指定し、負の値ではない整数にする必要があります。
- 幅が指定されている場合は、固定の幅解析が使用され、ESCAPE、QUOTE、列 SELECTOR、または HEADER は指定しないでください。
- 幅が指定されていない場合は、NO ROW DELIMITER を使用することはできません。
- 列名に重複を含めることはできません。
- QUOTE、DELIMITER、および ROW DELIMITER に指定される文字はすべて異なっている必要があります。
TEXTTABLE の例
- HEADER パラメーターを使用すると、1 行の ['b'] を返します。
SELECT * FROM TEXTTABLE(UNESCAPE('col1,col2,col3\na,b,c') COLUMNS col2 string HEADER) x
SELECT * FROM TEXTTABLE(UNESCAPE('col1,col2,col3\na,b,c') COLUMNS col2 string HEADER) x
- 固定の幅を使用し、2 行 ['a', 'b', 'c'], ['d', 'e', 'f'] を返します。
SELECT * FROM TEXTTABLE(UNESCAPE('abc\ndef') COLUMNS col1 string width 1, col2 string width 1, col3 string width 1) x
SELECT * FROM TEXTTABLE(UNESCAPE('abc\ndef') COLUMNS col1 string width 1, col2 string width 1, col3 string width 1) x
- 行区切り文字なしで固定の幅を使用すると、3 行 ['a'], ['b'], ['c'] を返します。
SELECT * FROM TEXTTABLE('abc' COLUMNS col1 string width 1 NO ROW DELIMITER) x
SELECT * FROM TEXTTABLE('abc' COLUMNS col1 string width 1 NO ROW DELIMITER) x
- ESCAPE パラメーターを使用すると、1 行 ['a,', 'b'] を返します。
SELECT * FROM TEXTTABLE('a:,,b' COLUMNS col1 string, col2 string ESCAPE ':') x
SELECT * FROM TEXTTABLE('a:,,b' COLUMNS col1 string, col2 string ESCAPE ':') x
- ネストされたテーブルとして以下を実行します。
SELECT x.* FROM t, TEXTTABLE(t.clobcolumn COLUMNS first string, second date SKIP 1) x
SELECT x.* FROM t, TEXTTABLE(t.clobcolumn COLUMNS first string, second date SKIP 1) x
- SELECTORs の使用。2 行 ['c', 'd', 'b'], ['c', 'f', 'b'] を返します。
SELECT * FROM TEXTTABLE('a,b\nc,d\nc,f' SELECTOR 'c' COLUMNS col1 string, col2 string col3 string SELECTOR 'a' 2) x
SELECT * FROM TEXTTABLE('a,b\nc,d\nc,f' SELECTOR 'c' COLUMNS col1 string, col2 string col3 string SELECTOR 'a' 2) x