@@ -6,12 +6,12 @@ import FunctionDescription from '@site/src/components/FunctionDescription';
6
6
7
7
<FunctionDescription description =" Introduced or updated: v1.2.339 " />
8
8
9
- 创建内部或外部暂存区( Stage) 。
9
+ 创建内部或外部 Stage。
10
10
11
11
## 语法
12
12
13
13
``` sql
14
- -- 内部暂存区
14
+ -- 内部 Stage
15
15
CREATE [ OR REPLACE ] STAGE [ IF NOT EXISTS ] < internal_stage_name>
16
16
[ FILE_FORMAT = (
17
17
FORMAT_NAME = ' <your-custom-format>'
@@ -20,7 +20,7 @@ CREATE [ OR REPLACE ] STAGE [ IF NOT EXISTS ] <internal_stage_name>
20
20
[ COPY_OPTIONS = ( copyOptions ) ]
21
21
[ COMMENT = ' <string_literal>' ]
22
22
23
- -- 外部暂存区
23
+ -- 外部 Stage
24
24
CREATE STAGE [ IF NOT EXISTS ] < external_stage_name>
25
25
externalStageParams
26
26
[ FILE_FORMAT = (
@@ -33,84 +33,29 @@ CREATE STAGE [ IF NOT EXISTS ] <external_stage_name>
33
33
34
34
### externalStageParams
35
35
36
- import Tabs from '@theme/Tabs ';
37
- import TabItem from '@theme/TabItem ';
38
-
39
- <Tabs groupId =" externalstageparams " >
40
-
41
- <TabItem value =" Amazon S3-compatible Storage " label =" 兼容 Amazon S3 的存储服务 " >
42
-
43
- ``` sql
44
- externalStageParams ::=
45
- ' s3://<bucket>[<path/>]'
46
- CONNECTION = (
47
- < connection_parameters>
48
- )
49
- ```
50
-
51
- 有关访问兼容 Amazon S3 的存储服务时可用的连接参数,请参阅[ 连接参数] ( /00-sql-reference/51-connect-parameters.md ) 。
52
-
53
- ::: note
54
- 要在 Amazon S3 上创建外部暂存区(External Stage),您还可以使用 IAM 用户帐户,这使您能够为暂存区定义细粒度的访问控制,包括指定对特定 S3 存储桶的读或写等操作。请参阅[ 示例 3:使用 AWS IAM 用户创建外部暂存区] ( #example-3-create-external-stage-with-aws-iam-user ) 。
36
+ ::: tip
37
+ 对于外部 Stage,建议使用 ` CONNECTION ` 参数引用预先配置的连接对象,而非内联凭据,以获得更高的安全性与可维护性。
55
38
:::
56
- </TabItem >
57
-
58
- <TabItem value =" Azure Blob Storage " label =" Azure Blob Storage " >
59
39
60
40
``` sql
61
41
externalStageParams ::=
62
- ' azblob://<container>[<path/>]'
63
- CONNECTION = (
64
- < connection_parameters>
65
- )
66
- ```
67
-
68
- 有关访问 Azure Blob Storage 时可用的连接参数,请参阅[ 连接参数] ( /00-sql-reference/51-connect-parameters.md ) 。
69
- </TabItem >
70
-
71
- <TabItem value =" Google Cloud Storage " label =" Google Cloud Storage " >
72
-
73
- ``` sql
74
- externalLocation ::=
75
- ' gcs://<bucket>[<path>]'
42
+ ' <protocol>://<location>'
76
43
CONNECTION = (
77
44
< connection_parameters>
78
45
)
79
- ```
80
-
81
- 有关访问 Google Cloud Storage 时可用的连接参数,请参阅[ 连接参数] ( /00-sql-reference/51-connect-parameters.md ) 。
82
- </TabItem >
83
-
84
- <TabItem value =" Alibaba Cloud OSS " label =" 阿里云 OSS " >
85
-
86
- ``` sql
87
- externalLocation ::=
88
- ' oss://<bucket>[<path>]'
46
+ |
89
47
CONNECTION = (
90
- < connection_parameters >
91
- )
48
+ CONNECTION_NAME = ' <your-connection-name> '
49
+ );
92
50
```
93
51
94
- 有关访问阿里云 OSS 时可用的连接参数,请参阅[ 连接参数] ( /00-sql-reference/51-connect-parameters.md ) 。
95
- </TabItem >
52
+ 不同存储服务可用的连接参数,请参见 [ Connection Parameters] ( /00-sql-reference/51-connect-parameters.md ) 。
96
53
97
- <TabItem value =" Tencent Cloud Object Storage " label =" 腾讯云对象存储 " >
98
-
99
- ``` sql
100
- externalLocation ::=
101
- ' cos://<bucket>[<path>]'
102
- CONNECTION = (
103
- < connection_parameters>
104
- )
105
- ```
106
-
107
- 有关访问腾讯云对象存储时可用的连接参数,请参阅[ 连接参数] ( /00-sql-reference/51-connect-parameters.md ) 。
108
- </TabItem >
109
- </Tabs >
54
+ 关于 ` CONNECTION_NAME ` 的更多信息,请参见 [ CREATE CONNECTION] ( ../13-connection/create-connection.md ) 。
110
55
111
56
### FILE_FORMAT
112
57
113
- 详细信息请参阅 [ 输入和输出文件格式 ] ( ../../../00-sql-reference/50-file-format-options.md ) 。
58
+ 详情请参见 [ Input & Output File Formats ] ( ../../../00-sql-reference/50-file-format-options.md ) 。
114
59
115
60
### copyOptions
116
61
@@ -122,23 +67,23 @@ copyOptions ::=
122
67
123
68
| 参数 | 描述 | 是否必须 |
124
69
| :---| :---| :---|
125
- | ` SIZE_LIMIT = <num> ` | 指定给定 COPY 语句要加载数据的最大行数(> 0) 。默认为 ` 0 ` | 可选 |
126
- | ` PURGE = <bool> ` | 如果文件成功加载到表中,命令将清除暂存区中的文件 。默认为 ` false ` | 可选 |
70
+ | ` SIZE_LIMIT = <num> ` | 大于 0 的数字,指定单个 COPY 语句最多加载的数据行数 。默认为 ` 0 ` 。 | 可选 |
71
+ | ` PURGE = <bool> ` | 设为 true 表示文件成功加载到表后,命令会清理 Stage 中的文件 。默认为 ` false ` 。 | 可选 |
127
72
128
73
129
74
## 访问控制要求
130
75
131
76
| 权限 | 对象类型 | 描述 |
132
77
| :---| :---| :---|
133
- | SUPER | 全局, 表 | 操作暂存区 (列出、创建、删除暂存区 )、目录或共享。 |
78
+ | SUPER | 全局、 表 | 操作 Stage (列出、创建、删除 Stage )、目录或共享。 |
134
79
135
- 要创建暂存区( Stage),执行操作的用户或 [ current_role] ( /guides/security/access-control/roles ) 必须具有 SUPER [ 权限(Privilege) ] ( /guides/security/access-control/privileges ) 。
80
+ 创建 Stage 时,执行操作的用户或其 [ current_role] ( /guides/security/access-control/roles ) 必须拥有 SUPER [ privilege ] ( /guides/security/access-control/privileges ) 。
136
81
137
82
## 示例
138
83
139
- ### 示例 1:创建内部暂存区
84
+ ### 示例 1:创建内部 Stage
140
85
141
- 此示例创建一个名为 * my_internal_stage* 的内部暂存区 :
86
+ 以下示例创建名为 * my_internal_stage* 的内部 Stage :
142
87
143
88
``` sql
144
89
CREATE STAGE my_internal_stage;
@@ -151,12 +96,21 @@ my_internal_stage|Internal |StageParams { storage: Fs(StorageFsConfig { root: "
151
96
152
97
```
153
98
154
- ### 示例 2:使用 AWS 访问密钥创建外部暂存区
99
+ ### 示例 2:使用 Connection 创建外部 Stage
155
100
156
- 此示例在 Amazon S3 上创建一个名为 * my_s3_stage* 的外部暂存区 :
101
+ 以下示例使用 Connection 在 Amazon S3 上创建名为 * my_s3_stage* 的外部 Stage :
157
102
158
103
``` sql
159
- CREATE STAGE my_s3_stage URL= ' s3://load/files/' CONNECTION = (ACCESS_KEY_ID = ' <your-access-key-id>' SECRET_ACCESS_KEY = ' <your-secret-access-key>' );
104
+ -- 先创建 Connection
105
+ CREATE CONNECTION my_s3_connection
106
+ STORAGE_TYPE = ' s3'
107
+ ACCESS_KEY_ID = ' <your-access-key-id>'
108
+ SECRET_ACCESS_KEY = ' <your-secret-access-key>' ;
109
+
110
+ -- 使用 Connection 创建 Stage
111
+ CREATE STAGE my_s3_stage
112
+ URL= ' s3://load/files/'
113
+ CONNECTION = (CONNECTION_NAME = ' my_s3_connection' );
160
114
161
115
DESC STAGE my_s3_stage;
162
116
+ -- -----------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------+---------+
@@ -166,18 +120,18 @@ DESC STAGE my_s3_stage;
166
120
+ -- -----------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------+---------+
167
121
```
168
122
169
- ### 示例 3:使用 AWS IAM 用户创建外部暂存区
123
+ ### 示例 3:使用 AWS IAM 用户创建外部 Stage
170
124
171
- 此示例使用 AWS Identity and Access Management (IAM) 用户在 Amazon S3 上创建一个名为 * iam_external_stage* 的外部暂存区 。
125
+ 以下示例使用 AWS Identity and Access Management (IAM) 用户在 Amazon S3 上创建名为 * iam_external_stage* 的外部 Stage 。
172
126
173
- #### 第 1 步 :为 S3 存储桶创建访问策略
127
+ #### 步骤 1 :为 S3 存储桶创建访问策略
174
128
175
- 以下步骤为 Amazon S3 上的存储桶(Bucket) * databend-toronto* 创建一个名为 * databend-access* 的访问策略:
129
+ 以下步骤为 Amazon S3 上的存储桶 * databend-toronto* 创建名为 * databend-access* 的访问策略:
176
130
177
- 1 . 登录 AWS 管理控制台,然后选择 ** Services ** > ** Security, Identity, & Compliance ** > ** IAM** 。
178
- 2 . 在左侧导航窗格中选择 ** Account settings ** ,然后转到右侧页面的 ** Security Token Service (STS)** 部分。确保您帐户所属的 AWS 区域的状态为 ** Active ** 。
179
- 3 . 在左侧导航窗格中选择 ** Policies ** ,然后在右侧页面上选择 ** Create policy ** 。
180
- 4 . 单击 ** JSON** 选项卡,将以下代码复制并粘贴到编辑器中,然后将策略另存为 * databend_access* 。
131
+ 1 . 登录 AWS 管理控制台,选择 ** 服务 ** > ** 安全性、身份与合规性 ** > ** IAM** 。
132
+ 2 . 在左侧导航栏选择 ** 账户设置 ** ,在右侧页面进入 ** 安全令牌服务 (STS)** 区域,确保所属 AWS 区域状态为 ** 活动 ** 。
133
+ 3 . 在左侧导航栏选择 ** 策略 ** ,在右侧页面点击 ** 创建策略 ** 。
134
+ 4 . 点击 ** JSON** 选项卡,将以下代码复制粘贴到编辑器,并将策略保存为 * databend_access* 。
181
135
182
136
``` json
183
137
{
@@ -203,57 +157,71 @@ DESC STAGE my_s3_stage;
203
157
}
204
158
```
205
159
206
- #### 第 2 步 :创建 IAM 用户
160
+ #### 步骤 2 :创建 IAM 用户
207
161
208
- 以下步骤创建一个名为 * databend* 的 IAM 用户,并将访问策略 * databend-access* 附加到该用户。
162
+ 以下步骤创建名为 * databend* 的 IAM 用户,并将访问策略 * databend-access* 附加到该用户:
209
163
210
- 1 . 在左侧导航窗格中选择 ** Users ** ,然后在右侧页面上选择 ** Add users ** 。
164
+ 1 . 在左侧导航栏选择 ** 用户 ** ,在右侧页面点击 ** 添加用户 ** 。
211
165
2 . 配置用户:
212
- - 将用户名设置为 * databend* 。
213
- - 为用户设置权限时,单击 ** Attach policies directly ** ,然后搜索并选择访问策略 * databend-access* 。
214
- 3 . 创建用户后,单击用户名打开详细信息页面,然后选择 ** Security credentials ** 选项卡。
215
- 4 . 在 ** Access keys ** 部分,单击 ** Create access key ** 。
216
- 5 . 为用例选择 ** Third-party service ** ,并勾选下方的复选框以确认创建访问密钥 。
217
- 6 . 复制生成的访问密钥和私有访问密钥并将其保存到安全的地方 。
166
+ - 用户名设为 * databend* 。
167
+ - 设置权限时,点击 ** 直接附加策略 ** ,搜索并选择访问策略 * databend-access* 。
168
+ 3 . 用户创建完成后,点击用户名进入详情页,选择 ** 安全凭证 ** 选项卡。
169
+ 4 . 在 ** 访问密钥 ** 区域,点击 ** 创建访问密钥 ** 。
170
+ 5 . 用例选择 ** 第三方服务 ** ,勾选下方复选框确认创建访问密钥 。
171
+ 6 . 复制并妥善保存生成的访问密钥和秘密访问密钥 。
218
172
219
- #### 第 3 步:创建外部暂存区
173
+ #### 步骤 3:创建外部 Stage
220
174
221
- 使用为 IAM 用户 * databend * 生成的访问密钥和私有访问密钥来创建外部暂存区 。
175
+ 使用 IAM 角色创建安全性更高的外部 Stage 。
222
176
223
177
``` sql
224
- CREATE STAGE iam_external_stage url = ' s3://databend-toronto' CONNECTION = (ACCESS_KEY_ID= ' <your-access-key-id>' SECRET_ACCESS_KEY= ' <your-secret-access-key>' );
178
+ -- 先使用 IAM 角色创建 Connection
179
+ CREATE CONNECTION iam_s3_connection
180
+ STORAGE_TYPE = ' s3'
181
+ ROLE_ARN = ' arn:aws:iam::123456789012:role/databend-access'
182
+ EXTERNAL_ID = ' my-external-id-123' ;
183
+
184
+ -- 使用 Connection 创建 Stage
185
+ CREATE STAGE iam_external_stage
186
+ URL = ' s3://databend-toronto'
187
+ CONNECTION = (CONNECTION_NAME = ' iam_s3_connection' );
225
188
```
226
189
227
- ### 示例 4:在 Cloudflare R2 上创建外部暂存区
190
+ ### 示例 4:在 Cloudflare R2 上创建外部 Stage
228
191
229
- [ Cloudflare R2] ( https://www.cloudflare.com/en-ca /products/r2/ ) 是 Cloudflare 推出的一款对象存储服务,与亚马逊的 AWS S3 服务完全兼容。本示例在 Cloudflare R2 上创建一个名为 * r2_stage* 的外部暂存区 。
192
+ [ Cloudflare R2] ( https://www.cloudflare.com/zh-cn /products/r2/ ) 是 Cloudflare 推出的对象存储服务,与 Amazon AWS S3 完全兼容。以下示例在 Cloudflare R2 上创建名为 * r2_stage* 的外部 Stage 。
230
193
231
- #### 第 1 步 :创建存储桶
194
+ #### 步骤 1 :创建存储桶
232
195
233
- 以下步骤在 Cloudflare R2 上创建一个名为 * databend* 的存储桶。
196
+ 以下步骤在 Cloudflare R2 上创建名为 * databend* 的存储桶:
234
197
235
- 1 . 登录 Cloudflare 仪表盘,在左侧导航窗格中选择 ** R2** 。
236
- 2 . 单击 ** Create bucket ** 创建一个存储桶,并将存储桶名称设置为 * databend* 。成功创建存储桶后,您可以在查看存储桶详细信息页面时,在存储桶名称正下方找到存储桶端点 。
198
+ 1 . 登录 Cloudflare 控制台,在左侧导航栏选择 ** R2** 。
199
+ 2 . 点击 ** 创建存储桶 ** ,设置存储桶名称为 * databend* 。创建成功后,在存储桶详情页即可在存储桶名称下方看到存储桶端点 。
237
200
238
- #### 第 2 步 :创建 R2 API 令牌
201
+ #### 步骤 2 :创建 R2 API 令牌
239
202
240
- 以下步骤创建一个包含访问密钥 ID 和私有访问密钥的 R2 API 令牌。
203
+ 以下步骤创建包含 Access Key ID 和 Secret Access Key 的 R2 API 令牌:
241
204
242
- 1 . 在 ** R2** > ** Overview ** 页面上单击 ** Manage R2 API Tokens ** 。
243
- 2 . 单击 ** Create API token ** 创建一个 API 令牌 。
244
- 3 . 配置 API 令牌时,选择必要的权限并根据需要设置 ** TTL** 。
245
- 4 . 单击 ** Create API Token ** 以获取访问密钥 ID 和私有访问密钥。复制并将其保存到安全的地方 。
205
+ 1 . 在 ** R2** > ** 概述 ** 页面点击 ** 管理 R2 API 令牌 ** 。
206
+ 2 . 点击 ** 创建 API 令牌 ** 。
207
+ 3 . 配置令牌时选择所需权限,并按需设置 ** TTL** 。
208
+ 4 . 点击 ** 创建 API 令牌 ** 获取 Access Key ID 和 Secret Access Key,复制并妥善保存 。
246
209
247
- #### 第 3 步:创建外部暂存区
210
+ #### 步骤 3:创建外部 Stage
248
211
249
- 使用创建的访问密钥 ID 和私有访问密钥创建一个名为 * r2_stage* 的外部暂存区 。
212
+ 使用已生成的 Access Key ID 和 Secret Access Key 创建名为 * r2_stage* 的外部 Stage 。
250
213
251
214
``` sql
215
+ -- 先创建 Connection
216
+ CREATE CONNECTION r2_connection
217
+ STORAGE_TYPE = ' s3'
218
+ REGION = ' auto'
219
+ ENDPOINT_URL = ' <your-bucket-endpoint>'
220
+ ACCESS_KEY_ID = ' <your-access-key-id>'
221
+ SECRET_ACCESS_KEY = ' <your-secret-access-key>' ;
222
+
223
+ -- 使用 Connection 创建 Stage
252
224
CREATE STAGE r2_stage
253
225
URL= ' s3://databend/'
254
- CONNECTION = (
255
- REGION = ' auto'
256
- ENDPOINT_URL = ' <your-bucket-endpoint>'
257
- ACCESS_KEY_ID = ' <your-access-key-id>'
258
- SECRET_ACCESS_KEY = ' <your-secret-access-key>' );
226
+ CONNECTION = (CONNECTION_NAME = ' r2_connection' );
259
227
```
0 commit comments