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

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/ncd1596241368722.ditamap
dita:ditavalPath
ja-JP/ncd1596241368722.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

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オプションが区切り記号も指定する場合、スキーマの指定が優先されます。