CREATE STAGE
内部または外部の stage を作成します。
構文
-- Internal stage
CREATE [ OR REPLACE ] STAGE [ IF NOT EXISTS ] <internal_stage_name>
[ FILE_FORMAT = (
FORMAT_NAME = '<your-custom-format>'
| TYPE = { CSV | TSV | NDJSON | PARQUET | ORC | AVRO | LANCE } [ formatTypeOptions ]
) ]
[ COMMENT = '<string_literal>' ]
-- External stage
CREATE STAGE [ IF NOT EXISTS ] <external_stage_name>
externalStageParams
[ FILE_FORMAT = (
FORMAT_NAME = '<your-custom-format>'
| TYPE = { CSV | TSV | NDJSON | PARQUET | ORC | AVRO | LANCE } [ formatTypeOptions ]
) ]
[ COMMENT = '<string_literal>' ]
externalStageParams
externalStageParams ::=
'<protocol>://<location>'
CONNECTION = (
<connection_parameters>
)
|
CONNECTION = (
CONNECTION_NAME = '<your-connection-name>'
);
異なるストレージサービスで使用可能な接続パラメータについては、接続パラメータ を参照してください。
CONNECTION_NAME の詳細については、CREATE CONNECTION を参照してください。
FILE_FORMAT
詳細は 入出力ファイル形式 を参照してください。
アクセス制御要件
stage を作成するには、操作を実行するユーザーまたは current_role が SUPER 権限 を持っている必要があります。
例
例 1: 内部 stage を作成する
この例では、my_internal_stage という名前の内部 stage を作成します。
CREATE STAGE my_internal_stage;
DESC STAGE my_internal_stage;
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ name │ stage_type │ storage_type │ url │ endpoint │ has_credentials │ has_encryption_key │ storage_params │ file_format_options │ creator │ created_on │ comment │ owner │
├───────────────────┼────────────┼──────────────┼──────┼──────────┼─────────────────┼────────────────────┼────────────────┼─────────────────────┼──────────┼────────────────────────────┼─────────┼───────────────┤
│ my_internal_stage │ Internal │ NULL │ NULL │ NULL │ false │ false │ NULL │ {"compression":...} │ root@% │ 2026-06-16 22:21:19.000000 │ │ account_admin │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
例 2: Connection を使用して外部 stage を作成する
この例では、Connection を使用して Amazon S3 上に my_s3_stage という名前の外部 stage を作成します。
-- First create a connection
CREATE CONNECTION my_s3_connection
STORAGE_TYPE = 's3'
ACCESS_KEY_ID = '<your-access-key-id>'
SECRET_ACCESS_KEY = '<your-secret-access-key>';
-- Create stage using the connection
CREATE STAGE my_s3_stage
URL='s3://load/files/'
CONNECTION = (CONNECTION_NAME = 'my_s3_connection');
DESC STAGE my_s3_stage;
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ name │ stage_type │ storage_type │ url │ endpoint │ has_credentials │ has_encryption_key │ storage_params │ file_format_options │ creator │ created_on │ comment │ owner │
├─────────────┼────────────┼──────────────┼──────────────────┼──────────┼─────────────────┼────────────────────┼───────────────────────┼─────────────────────┼─────────┼────────────────────────────┼─────────┼───────────────┤
│ my_s3_stage │ External │ s3 │ s3://load/files/ │ NULL │ true │ false │ {"bucket":"load",...} │ {"compression":...} │ root@% │ 2026-06-16 22:21:19.000000 │ │ account_admin │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
例 3: AWS IAM User を使用して外部 stage を作成する
この例では、AWS Identity and Access Management (IAM) ユーザーを使用して、Amazon S3 上に iam_external_stage という名前の外部 stage を作成します。
ステップ 1: S3 バケットのアクセスポリシーを作成する
以下の手順では、Amazon S3 上のバケット lake-toronto に対して lake-access という名前のアクセスポリシーを作成します。
- AWS Management Console にログインし、Services > Security, Identity, & Compliance > IAM を選択します。
- 左側のナビゲーションペインで Account settings を選択し、右側のページで Security Token Service (STS) セクションに移動します。アカウントが属する AWS リージョンのステータスが Active であることを確認してください。
- 左側のナビゲーションペインで Policies を選択し、右側のページで Create policy を選択します。
- JSON タブをクリックし、次のコードをエディタにコピー&ペーストして、ポリシーを lake_access として保存します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": ["s3:*Object"],
"Resource": "arn:aws:s3:::lake-toronto/*"
},
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": "arn:aws:s3:::lake-toronto"
}
]
}
ステップ 2: IAM User を作成する
以下の手順では、lake という名前の IAM ユーザーを作成し、そのユーザーにアクセスポリシー lake-access をアタッチします。
- 左側のナビゲーションペインで Users を選択し、右側のページで Add users を選択します。
- ユーザーを設定します。
- ユーザー名を lake に設定します。
- ユーザーの権限を設定する際に、Attach policies directly をクリックし、アクセスポリシー lake-access を検索して選択します。
- ユーザーの作成後、ユーザー名をクリックして詳細ページを開き、Security credentials タブを選択します。
- Access keys セクションで、Create access key をクリックします。
- ユースケースとして Third-party service を選択し、その下のチェックボックスをオンにしてアクセスキーの作成を確認します。
- 生成されたアクセスキーとシークレットアクセスキーをコピーし、安全な場所に保存します。
ステップ 3: 外部 stage を作成する
より高いセキュリティのために、IAM ロールを使用して外部 stage を作成します。
-- First create a connection using IAM role
CREATE CONNECTION iam_s3_connection
STORAGE_TYPE = 's3'
ROLE_ARN = 'arn:aws:iam::123456789012:role/lake-access'
EXTERNAL_ID = 'my-external-id-123';
-- Create stage using the connection
CREATE STAGE iam_external_stage
URL = 's3://lake-toronto'
CONNECTION = (CONNECTION_NAME = 'iam_s3_connection');
例 4: Cloudflare R2 上に外部 stage を作成する
Cloudflare R2 は、Cloudflare が提供するオブジェクトストレージサービスであり、Amazon の AWS S3 サービスと完全な互換性があります。この例では、Cloudflare R2 上に r2_stage という名前の外部 stage を作成します。
ステップ 1: バケットを作成する
以下の手順では、Cloudflare R2 上に lake という名前のバケットを作成します。
- Cloudflare ダッシュボードにログインし、左側のナビゲーションペインで R2 を選択します。
- Create bucket をクリックしてバケットを作成し、バケット名を lake に設定します。バケットの作成に成功すると、バケット詳細ページでバケット名のすぐ下にバケットエンドポイントが表示されます。
ステップ 2: R2 API Token を作成する
以下の手順では、Access Key ID と Secret Access Key を含む R2 API トークンを作成します。
- R2 > Overview で Manage R2 API Tokens をクリックします。
- Create API token をクリックして API トークンを作成します。
- API トークンを設定する際に、必要な権限を選択し、必要に応じて TTL を設定します。
- Create API Token をクリックして Access Key ID と Secret Access Key を取得します。これらをコピーし、安全な場所に保存します。
ステップ 3: 外部 stage を作成する
作成した Access Key ID と Secret Access Key を使用して、r2_stage という名前の外部 stage を作成します。
-- First create a connection
CREATE CONNECTION r2_connection
STORAGE_TYPE = 's3'
REGION = 'auto'
ENDPOINT_URL = '<your-bucket-endpoint>'
ACCESS_KEY_ID = '<your-access-key-id>'
SECRET_ACCESS_KEY = '<your-secret-access-key>';
-- Create stage using the connection
CREATE STAGE r2_stage
URL='s3://lake/'
CONNECTION = (CONNECTION_NAME = 'r2_connection');