17.05 - CSVファイル ヘッダーとスキーマ - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)

CSVファイルには通常、ファイルの最初の行としてヘッダー行が含まれます。ヘッダー行は、ファイルの後続行ごとの対応するデータ フィールドで定義される列の名前を定義します。デフォルトでは、レコードの各フィールドがカンマ(,)で区切られます。デフォルトでは、各レコードが改行(復帰改行(CRLF)と改行(LF))で区切られます。例:

First Name,Last Name,City
John,Smith,Los Angeles
Mary,Jones,New York
外部データのCSVファイルにヘッダー レコードがない場合は、データベースでスキーマオブジェクトを作成する必要があります。CSVデータのVantageスキーマ オブジェクトを使用して、以下を示します。
  • field_names。外部テーブルで列名として使用されます。スキーマ定義にfield_namesパラメータが含まれる場合、Vantageは、CSVファイル内の最初のレコードがヘッダー レコードではなくデータ レコードであると見なします。
  • field_delimiter文字。CSVデータ内のフィールドの区切りに使用されます。

CSVファイルのスキーマを作成するには、SQL文CREATE storage_format SCHEMAを使用します。

スキーマは、CSVデータに対してスキーマが定義されている場合でも、フィールドおよび区切り記号の指定にJSONスタイルの構文を使用します。

CSVファイルにヘッダー行がないながら特定の列名を手動で割り当てたくない場合、例えば列数が非常に多い場合などは、Vantageで列名を自動的に割り当てられるようにできます。CSVファイルのスキーマを作成し、スキーマ仕様に"field_names":[]オプションを含め、角括弧の内容を空のままにします。Vantageでは、csv_fldn形式の列名が自動的に生成されます。

CREATE FOREIGN TABLEを使用して特定の外部ストレージの場所にあるCSVファイルにアクセスする場合、外部テーブルのペイロード列定義を使用して、それらのCSVファイルにスキーマを関連付けます。例:

CREATE CSV SCHEMA SodaBrands_Schema AS
    '{"field_delimiter":"\t",
      "field_names":["Id","productName","brand"]}';
CREATE FOREIGN TABLE SodaBrands_T,
EXTERNAL SECURITY DEFINER TRUSTED DefAuth_S3
(LOCATION VARCHAR(2048) CHARACTER SET UNICODE CASESPECIFIC,
 PAYLOAD  DATASET INLINE LENGTH 64000 STORAGE FORMAT CSV WITH SCHEMA SodaBrands_Schema)
USING ( LOCATION  ('external_file_path') );

スキーマは、CSVファイルで使用されるフィールド区切り記号を示すこともできます。区切り記号が標準のカンマ文字ではない場合(タブ区切り記号のTSVファイルなど)では、"field_delimiter"パラメータを使用します。USING...ROWFORMATオプションが区切り記号も指定する場合、スキーマの指定が優先されます。