11.3.2 外部表を定義する方法
外部表を定義するには,定義系SQLのCREATE FOREIGN TABLE文を実行します。CREATE FOREIGN TABLE文を実行するには,CONNECT権限とスキーマ定義権限が必要です。
なお,外部表を定義する前に,スキーマを定義しておく必要があります。自分(HADBサーバに接続中の認可識別子のHADBユーザ)が所有するスキーマに対してだけ,外部表を定義できます。
外部表の定義例を次に示します。
-
外部データがオブジェクトストレージに格納されている場合
- (例)
-
外部表(PURCHASE)を定義します。
CREATE FOREIGN TABLE "PURCHASE" ("CNO" CHAR(8),"PDATE" DATE,"SALES" INTEGER) ...1 SERVER "FOREIGNSERVER1" ...2 OPTIONS ( FORMAT PARQUET ...3 ,LOCATION 's3://data/' ...4 )[説明]
-
外部表の表名,および外部表の列定義を指定します。
外部表には,STRING型,配列型(ARRAY型),構造データ(STRUCT型)などの列も定義できます。
-
外部表が使用する外部サーバの名称を指定します。
-
外部データの形式を指定します。外部データがPARQUET形式の場合,PARQUETを指定します。
-
外部データの検索対象ディレクトリのパスを指定します。外部表PURCHASEの検索時,s3://data/ディレクトリ下(サブディレクトリも含む)にあるすべての外部データファイル中の外部データが外部表に読み込まれます。
-
-
外部データがファイルストレージに格納されている場合
- (例)
-
外部表(PURCHASE)を定義します。
CREATE FOREIGN TABLE "PURCHASE" ("CNO" CHAR(8),"PDATE" DATE,"SALES" INTEGER) ...1 OPTIONS ( FORMAT PARQUET ...2 ,LOCATION 'file:///data/ftbl/T1/' ...3 )[説明]
-
外部表の表名,および外部表の列定義を指定します。
外部表には,STRING型,配列型(ARRAY型),構造データ(STRUCT型)などの列も定義できます。
-
外部データの形式を指定します。外部データがPARQUET形式の場合,PARQUETを指定します。
-
外部データの検索対象ディレクトリのパスを指定します。外部表PURCHASEの検索時,/data/ftbl/T1/ディレクトリ下(サブディレクトリも含む)にあるすべての外部データファイル中の外部データが外部表に読み込まれます。
-
なお,外部表の定義時には,外部表に外部データは読み込まれません。外部表の検索時に,外部表に外部データが読み込まれます。そのため,検索対象とする外部データを直接修正して変更した場合,外部表の検索結果が変わることがあります。
- メモ
-
ALTER TABLE文では外部表の定義を変更できません。外部表の定義を変更する場合は,DROP FOREIGN TABLE文でいったん外部表を削除し,そのあとに外部表をCREATE FOREIGN TABLE文で再定義してください。