📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

CREATE EXTERNAL TABLE



CREATE TABLE ... CONNECTION = (...) ステートメントは、デフォルトのローカルストレージを使用する代わりに、データ保存先として S3 互換ストレージのバケットを指定してテーブルを作成します。

その後、fuse テーブルエンジンのテーブルは、指定した S3 互換バケットに保存されます。

利点

  • テーブルデータの保存場所を決定できます。
  • Amazon S3 Express One Zone のような高性能ストレージを活用して、パフォーマンスを向上できます。

構文

CREATE TABLE [IF NOT EXISTS] [db.]table_name ( <column_name> <data_type> [NOT NULL | NULL] [{ DEFAULT <expr> }], <column_name> <data_type> [NOT NULL | NULL] [{ DEFAULT <expr> }], ... ) 's3://<bucket>/[<path>]' CONNECTION = ( ENDPOINT_URL = 'https://<endpoint-URL>' ACCESS_KEY_ID = '<your-access-key-ID>' SECRET_ACCESS_KEY = '<your-secret-access-key>' ENABLE_VIRTUAL_HOST_STYLE = 'true' | 'false' ) | CONNECTION = ( CONNECTION_NAME = '<your-connection-name>' );

接続パラメータ:

パラメータ説明必須
s3://<bucket>/[<path>]ファイルが指定された外部ロケーション(S3 互換バケット)に存在しますはい
ENDPOINT_URLhttps:// で始まるバケットのエンドポイント URL。任意
ACCESS_KEY_IDAWS S3 互換オブジェクトストレージに接続するためのアクセスキー ID です。指定しない場合、TiDB Cloud Lake は匿名でバケットにアクセスします。任意
SECRET_ACCESS_KEYAWS S3 互換オブジェクトストレージに接続するためのシークレットアクセスキーです。任意
ENABLE_VIRTUAL_HOST_STYLEバケットのアドレッシングに仮想ホスト形式を使用する場合は、'true' に設定します。任意

CONNECTION_NAME の詳細については、CREATE CONNECTION を参照してください。

S3 互換バケットポリシーの要件

外部ロケーションの S3 バケットには、S3 バケットポリシーを通じて次の権限が付与されている必要があります。

読み取り専用アクセス:

  • s3:GetObject: バケットからオブジェクトを読み取ることを許可します。
  • s3:ListBucket: バケット内のオブジェクト一覧を取得することを許可します。
  • s3:ListBucketVersions: バケット内のオブジェクトバージョン一覧を取得することを許可します。
  • s3:GetObjectVersion: オブジェクトの特定バージョンを取得することを許可します。

書き込み可能アクセス:

  • s3:PutObject: バケットにオブジェクトを書き込むことを許可します。
  • s3:DeleteObject: バケットからオブジェクトを削除することを許可します。
  • s3:AbortMultipartUpload: マルチパートアップロードを中止することを許可します。
  • s3:DeleteObjectVersion: オブジェクトの特定バージョンを削除することを許可します。

例

SHOW CREATE TABLE コマンドを使用する前に、hide_options_in_show_create_table 変数を 0 に設定する必要があります。

SET GLOBAL hide_options_in_show_create_table = 0;

外部ロケーションを使用してテーブルを作成する

Amazon S3 などの外部ロケーションにデータを保存するテーブルを作成します。

-- Create a table named `mytable` and specify the location `s3://testbucket/admin/data/` for the data storage CREATE TABLE mytable ( a INT ) 's3://testbucket/admin/data/' CONNECTION = ( ACCESS_KEY_ID = '<your_aws_key_id>', SECRET_ACCESS_KEY = '<your_aws_secret_key>', ENDPOINT_URL = 'https://s3.amazonaws.com' ); -- Show the table schema SHOW CREATE TABLE mytable; CREATE TABLE mytable ( a INT NULL ) ENGINE = FUSE COMPRESSION = 'zstd' STORAGE_FORMAT = 'parquet' LOCATION = 's3 | bucket=testbucket,root=/admin/data/,endpoint=https://s3.amazonaws.com';

接続を使用してテーブルを作成する

または、接続を作成してそれを使ってテーブルを作成することもできます。

-- Create a connection named `s3_connection` for the S3 credentials CREATE CONNECTION s3_connection STORAGE_TYPE = 's3' ACCESS_KEY_ID = '<your-access-key-id>' SECRET_ACCESS_KEY = '<your-secret-access-key>'; CREATE TABLE mytable ( a INT ) 's3://testbucket/admin/data/' CONNECTION = ( CONNECTION_NAME = 's3_connection' ); -- Show the table schema SHOW CREATE TABLE mytable; CREATE TABLE mytable ( a INT NULL ) ENGINE = FUSE COMPRESSION = 'zstd' STORAGE_FORMAT = 'parquet' LOCATION = 's3 | bucket=testbucket,root=/admin/data/,endpoint=https://s3.amazonaws.com';

このページは役に立ちましたか?