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

Teradata Vantage™ - Native Object Store 入門ガイド

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1214-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ファイルにスキーマを関連付けます。例えば、次のようになります。

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