@@ -6,21 +6,25 @@ sidebar_label: Snowflake → Databend
6
6
7
7
> ** 功能** : 全量加载
8
8
9
- 在本教程中,我们将引导你完成从 Snowflake 以 Parquet 格式导出数据到 Amazon S3 存储桶,然后将其加载到 Databend Cloud 的过程。
9
+ 本教程将指导您完成从 Snowflake 迁移数据到 Databend 的过程。迁移过程包括将数据从 Snowflake 导出到 Amazon S3 存储桶,然后将其加载到 Databend 中。该过程分为三个主要步骤:
10
+
11
+ ![ alt text] ( @site/static/img/load/snowflake-databend.png )
12
+
13
+ 在本教程中,我们将指导您完成将数据从 Snowflake 以 Parquet 格式导出到 Amazon S3 存储桶,然后将其加载到 Databend Cloud 的过程。
10
14
11
15
## 开始之前
12
16
13
- 在开始之前,请确保你已具备以下先决条件 :
17
+ 在开始之前,请确保您已具备以下先决条件 :
14
18
15
- - ** Amazon S3 存储桶** : 一个 S3 存储桶,用于存储导出的数据 ,以及上传文件所需的权限。[ 了解如何创建 S3 存储桶] ( https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html ) 。在本教程中,我们使用 ` s3://databend-doc/snowflake/ ` 作为暂存导出数据的位置。
16
- - ** AWS 凭证** : 具有访问 S3 存储桶足够权限的 AWS Access Key ID 和 Secret Access Key。[ 管理你的 AWS 凭证] ( https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys ) 。
17
- - ** 管理 IAM 角色和策略的权限** : 确保你具有创建和管理 IAM 角色和策略的必要权限,这些权限是配置 Snowflake 和 Amazon S3 之间访问所必需的。[ 了解有关 IAM 角色和策略的信息 ] ( https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html ) 。
19
+ - ** Amazon S3 存储桶** : 一个用于存储导出数据的 S3 存储桶,以及上传文件所需的权限。[ 了解如何创建 S3 存储桶] ( https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html ) 。在本教程中,我们使用 ` s3://databend-doc/snowflake/ ` 作为暂存导出数据的位置。
20
+ - ** AWS 凭证** : 具有访问 S3 存储桶足够权限的 AWS Access Key ID 和 Secret Access Key。[ 管理您的 AWS 凭证] ( https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys ) 。
21
+ - ** 管理 IAM 角色和策略的权限** : 确保您具有创建和管理 IAM 角色和策略的必要权限,这是配置 Snowflake 和 Amazon S3 之间访问所必需的。[ 了解 IAM 角色和策略 ] ( https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html ) 。
18
22
19
- ## 步骤 1: 配置 Snowflake Storage Integration 以访问 Amazon S3
23
+ ## 步骤 1: 为 Amazon S3 配置 Snowflake Storage Integration
20
24
21
- 在此步骤中,我们将配置 Snowflake 以使用 IAM 角色访问 Amazon S3。首先,我们将创建一个 IAM 角色,然后使用该角色建立 Snowflake Storage Integration, 以实现安全的数据访问。
25
+ 在此步骤中,我们将配置 Snowflake 使用 IAM 角色访问 Amazon S3。首先,我们将创建一个 IAM 角色,然后使用该角色建立 Snowflake Storage Integration 以实现安全的数据访问。
22
26
23
- 1 . 登录到 AWS 管理控制台,然后在 ** IAM** > ** Policies** 上创建一个策略,其中包含以下 JSON 代码 :
27
+ 1 . 登录 AWS 管理控制台,然后在 ** IAM** > ** Policies** 中使用以下 JSON 代码创建策略 :
24
28
25
29
``` json
26
30
{
@@ -56,20 +60,21 @@ sidebar_label: Snowflake → Databend
56
60
}
57
61
```
58
62
59
- 此策略适用于名为 ` databend-doc ` 的 S3 存储桶,特别是该存储桶中的 ` snowflake ` 文件夹。
63
+ 此策略适用于名为 ` databend-doc ` 的 S3 存储桶,特别是该存储桶内的 ` snowflake ` 文件夹。
60
64
61
- - ` s3:PutObject ` 、 ` s3:GetObject ` 、 ` s3:GetObjectVersion ` 、 ` s3:DeleteObject ` 、 ` s3:DeleteObjectVersion ` : 允许对 snowflake 文件夹中的对象执行操作( 例如,` s3://databend-doc/snowflake/ ` )。你可以在此文件夹中上传 、读取和删除对象。
62
- - ` s3:ListBucket ` 、 ` s3:GetBucketLocation ` : 允许列出 ` databend-doc ` 存储桶的内容并检索其位置。` Condition ` 元素确保列表仅限于 ` snowflake ` 文件夹中的对象 。
65
+ - ` s3:PutObject ` , ` s3:GetObject ` , ` s3:GetObjectVersion ` , ` s3:DeleteObject ` , ` s3:DeleteObjectVersion ` : 允许对 snowflake 文件夹内的对象进行操作 ( 例如,` s3://databend-doc/snowflake/ ` )。您可以在此文件夹中上传 、读取和删除对象。
66
+ - ` s3:ListBucket ` , ` s3:GetBucketLocation ` : 允许列出 ` databend-doc ` 存储桶的内容并检索其位置。` Condition ` 元素确保列表操作仅限于 ` snowflake ` 文件夹内的对象 。
63
67
64
- 2 . 在 ** IAM** > ** Roles** 上创建一个名为 ` databend-doc-role ` 的角色,并附加我们创建的策略 。
68
+ 2 . 在 ** IAM** > ** Roles** 中创建名为 ` databend-doc-role ` 的角色并附加我们创建的策略 。
65
69
- 在创建角色的第一步中,为 ** Trusted entity type** 选择 ** AWS account** ,为 ** An AWS account** 选择 ** This account (xxxxx)** 。
66
70
67
71
![ alt text] ( ../../../../static/img/documents/tutorials/trusted-entity.png )
68
72
69
- - 创建角色后,复制角色 ARN 并将其保存在安全的位置 ,例如 ` arn:aws:iam::123456789012:role/databend-doc-role ` 。
70
- - 稍后 ,在获得 Snowflake 帐户的 IAM 用户 ARN 后,我们将更新角色的 ** Trust Relationships ** 。
73
+ - 角色创建后,复制并将角色 ARN 保存在安全位置 ,例如 ` arn:aws:iam::123456789012:role/databend-doc-role ` 。
74
+ - 我们稍后将更新角色的 ** Trust Relationships ** ,在获得 Snowflake 账户的 IAM 用户 ARN 之后 。
71
75
72
- 3 . 在 Snowflake 中打开一个 SQL 工作表,并使用角色 ARN 创建一个名为 ` my_s3_integration ` 的存储集成。
76
+
77
+ 3 . 在 Snowflake 中打开 SQL 工作区,使用角色 ARN 创建名为 ` my_s3_integration ` 的 storage integration。
73
78
74
79
``` sql
75
80
CREATE OR REPLACE STORAGE INTEGRATION my_s3_integration
@@ -80,13 +85,13 @@ CREATE OR REPLACE STORAGE INTEGRATION my_s3_integration
80
85
ENABLED = TRUE;
81
86
```
82
87
83
- 4 . 显示存储集成详细信息,并在结果中获取 ` STORAGE_AWS_IAM_USER_ARN ` 属性的值,例如 ` arn:aws:iam::123456789012:user/example ` 。我们将在下一步中使用此值来更新角色 ` databend-doc-role ` 的 ** Trust Relationships** 。
88
+ 4 . 显示 storage integration 详细信息并获取结果中 ` STORAGE_AWS_IAM_USER_ARN ` 属性的值,例如 ` arn:aws:iam::123456789012:user/example ` 。我们将在下一步中使用此值来更新角色 ` databend-doc-role ` 的 ** Trust Relationships** 。
84
89
85
90
``` sql
86
91
DESCRIBE INTEGRATION my_s3_integration;
87
92
```
88
93
89
- 5 . 返回到 AWS 管理控制台,打开角色 ` databend-doc-role ` ,然后导航到 ** Trust relationships** > ** Edit trust policy** 。将以下代码复制到编辑器中:
94
+ 5 . 返回 AWS 管理控制台,打开角色 ` databend-doc-role ` ,导航到 ** Trust relationships** > ** Edit trust policy** 。将以下代码复制到编辑器中:
90
95
91
96
``` json
92
97
{
@@ -103,11 +108,12 @@ DESCRIBE INTEGRATION my_s3_integration;
103
108
}
104
109
```
105
110
106
- ARN `arn:aws:iam::123456789012:user/example` 是我们在上一步中获得的 Snowflake 帐户的 IAM 用户 ARN。
111
+ ARN `arn:aws:iam::123456789012:user/example` 是我们在上一步中获得的 Snowflake 账户的 IAM 用户 ARN。
112
+
107
113
108
- ## 步骤 2:准备数据并将其导出到 Amazon S3
114
+ ## 步骤 2: 准备并导出数据到 Amazon S3
109
115
110
- 1 . 在 Snowflake 中使用 Snowflake 存储集成 ` my_s3_integration ` 创建一个外部 Stage :
116
+ 1 . 在 Snowflake 中使用 Snowflake storage integration ` my_s3_integration ` 创建外部 stage :
111
117
112
118
``` sql
113
119
CREATE OR REPLACE STAGE my_external_stage
@@ -116,7 +122,7 @@ CREATE OR REPLACE STAGE my_external_stage
116
122
FILE_FORMAT = (TYPE = ' PARQUET' );
117
123
```
118
124
119
- ` URL = 's3://databend-doc/snowflake/' ` 指定 S3 存储桶和将要暂存数据的文件夹 。路径 ` s3://databend-doc/snowflake/ ` 对应于 S3 存储桶 ` databend-doc ` 和该存储桶中的文件夹 ` snowflake ` 。
125
+ ` URL = 's3://databend-doc/snowflake/' ` 指定了数据将要暂存的 S3 存储桶和文件夹 。路径 ` s3://databend-doc/snowflake/ ` 对应 S3 存储桶 ` databend-doc ` 以及该存储桶内的 ` snowflake ` 文件夹 。
120
126
121
127
2 . 准备一些要导出的数据。
122
128
@@ -144,7 +150,7 @@ COPY INTO @my_external_stage/my_table_data_
144
150
FILE_FORMAT = (TYPE = ' PARQUET' ) HEADER= true;
145
151
```
146
152
147
- 如果现在打开存储桶 ` databend-doc ` ,你应该会在 ` snowflake ` 文件夹中看到一个 Parquet 文件:
153
+ 如果您现在打开存储桶 ` databend-doc ` ,应该会在 ` snowflake ` 文件夹中看到一个 Parquet 文件:
148
154
149
155
![ alt text] ( ../../../../static/img/documents/tutorials/bucket-folder.png )
150
156
@@ -163,7 +169,7 @@ CREATE TABLE my_target_table (
163
169
);
164
170
```
165
171
166
- 2 . 使用 [ COPY INTO] ( /sql/sql-commands/dml/dml-copy-into-table ) 加载存储桶中导出的数据 :
172
+ 2 . 使用 [ COPY INTO] ( /sql/sql-commands/dml/dml-copy-into-table ) 加载存储桶中的导出数据 :
167
173
168
174
``` sql
169
175
COPY INTO my_target_table
0 commit comments