ディレクトリテーブルの管理

このトピックでは、ディレクトリテーブルを使用して外部ステージまたは内部ステージを作成および管理する方法について説明します。

ディレクトリテーブルのメタデータ自動更新

ディレクトリテーブルのメタデータは、クラウドストレージサービスのイベントメッセージングサービスを使用して自動的に更新できます。

更新操作は、メタデータを外部ステージと外部パスの関連ファイルの最新セットと同期します。つまり、

  • パス内の新しいファイルがテーブルメタデータに追加されます。

  • パス内のファイルへの変更は、テーブルメタデータで更新されます。

  • パス内になくなったファイルは、テーブルのメタデータから削除されます。

自動的に更新されるディレクトリテーブルを使用してステージを作成する手順については、 ディレクトリテーブルの自動化されたメタデータ更新 をご参照ください。

注釈

メタデータを自動的に更新する機能は、外部クラウドストレージを参照する内部ステージのディレクトリテーブルでは使用できません。これらの型のステージでは、ディレクトリテーブルのメタデータを手動で更新する必要があります。手順については、 ディレクトリテーブルの手動リフレッシュ (このトピック内)をご参照ください。

欠落したファイルを登録するために、 データファイルをステージングするためのベストプラクティス に従い、 ALTER STAGE ... REFRESH ステートメントを定期的に実行することをお勧めします。満足のいくパフォーマンスを得るために、 ALTER STAGE を含む選択的パスプレフィックスを使用することもお勧めします。そうすると、リストして既存登録の有無を確認する必要のあるファイル数を減らすことができます(例: ボリュームに応じて、 bucket_name/YYYY/MM/DD/ または bucket_name/YYYY/MM/DD/HH/)。

ディレクトリテーブルを使用したステージの作成

このセクションでは、ディレクトリテーブルを階層化してステージングされたファイルに関するメタデータを保存するステージを(CREATE STAGE を使用して)作成する手順について説明します。

内部ステージのディレクトリテーブルでは、 手動でメタデータをリフレッシュする 必要があります。外部ステージにディレクトリテーブルを含めて、手動でメタデータを更新することもできます。メタデータ自動更新の詳細については、 ディレクトリテーブルのメタデータ自動更新 (このトピック内)をご参照ください。

ディレクトリテーブルを使用してステージを作成するための構文は、標準の外部ステージまたは内部ステージを作成する場合とほぼ同じです。オプションの DIRECTORY パラメーターを TRUE に設定します。

完全な構文とパラメーターの説明については、 CREATE STAGE をご参照ください。既存のステージにディレクトリテーブルを追加するには、 ALTER STAGE ... SET DIRECTORY コマンドを使用します。

注釈

ディレクトリテーブルを使用してステージを作成した後、 ALTER STAGE ... REFRESH を実行して、ディレクトリテーブルのメタデータを手動で更新する 必要 があります。

ディレクトリテーブルを含む mystage という名前の内部ステージを作成します。ステージは myformat という名前のファイル形式を参照します。

CREATE STAGE mystage
  DIRECTORY = (ENABLE = TRUE)
  FILE_FORMAT = myformat;
Copy

ディレクトリテーブルを含む mystage という名前の外部ステージを作成します。ステージは、パスが filesload という名前のバケットまたはコンテナーを参照します。 my_storage_int ストレージ統合により、クラウドストレージの場所への安全なアクセスが提供されます。

注釈

URL 値の保存場所は、スラッシュ(/)で終わる必要があります。

Amazon S3

CREATE STAGE mystage
  URL='s3://load/files/'
  STORAGE_INTEGRATION = my_storage_int
  DIRECTORY = (ENABLE = TRUE);
Copy

Google Cloud Storage

CREATE STAGE mystage
  URL='gcs://load/files/'
  STORAGE_INTEGRATION = my_storage_int
  DIRECTORY = (ENABLE = TRUE);
Copy

Microsoft Azure

CREATE STAGE mystage
  URL='azure://myaccount.blob.core.windows.net/load/files/'
  STORAGE_INTEGRATION = my_storage_int
  DIRECTORY = (ENABLE = TRUE);
Copy

ディレクトリテーブルの手動リフレッシュ

ALTER STAGE コマンドを使用して、ディレクトリテーブルのメタデータを手動で更新します。

注釈

外部ステージでメタデータを手動で更新すると、同時に実行されている自動更新操作はブロックされます。手動更新が完了すると、自動更新が再開されます。

例:

ALTER STAGE mystage REFRESH;
Copy