安排 Snowflake 转移作业
借助 BigQuery Data Transfer Service 提供的 Snowflake 连接器,您可以使用公共 IP 许可清单安排和管理自动转移作业,以将数据从 Snowflake 迁移到 BigQuery。
概览
Snowflake 连接器与 Google Kubernetes Engine 中的迁移代理合作,并触发从 Snowflake 到托管 Snowflake 的同一云服务提供商中的暂存区的加载操作。对于 AWS 托管的 Snowflake 账号,数据会先暂存在 Amazon S3 存储桶中,然后通过 BigQuery Data Transfer Service 转移到 BigQuery。
下图展示了如何将数据从 AWS 托管的 Snowflake 数据仓库转移到 BigQuery。
限制
使用 Snowflake 连接器进行的数据转移存在以下限制:
- 仅支持从托管在 AWS 上的 Snowflake 账号的数据转移。不支持从托管在 Google Cloud 或 Microsoft Azure 上的 Snowflake 账号的数据转移。
- Snowflake 连接器不支持增量数据转移。
- Snowflake 连接器仅支持从单个 Snowflake 数据库和架构中的表的转移。如需从包含多个 Snowflake 数据库或架构的表中进行转移,您可以单独设置每个转移作业。
- 将数据从 Snowflake 加载到 Amazon S3 存储桶的速度受您为此转移作业选择的 Snowflake 仓库的限制。
数据会以 Parquet 数据格式从 Snowflake 中提取,然后再加载到 BigQuery 中:
- 不支持以下 Parquet 数据类型:
TIMESTAMP_TZ
、TIMESTAMP_LTZ
OBJECT
、VARIANT
、ARRAY
- 如需了解详情,请参阅评估 Snowflake 数据。
不支持以下 Parquet 数据类型,但可以转换:
TIMESTAMP_NTZ
在生成元数据并运行转换引擎时,使用全局类型转换配置 YAML 替换
DATETIME
转换为TIMESTAMP
的默认行为。配置 YAML 可能类似于以下示例:
type: experimental_object_rewriter global: typeConvert: datetime: TIMESTAMP
- 不支持以下 Parquet 数据类型:
准备工作
在设置 Snowflake 转移之前,您必须执行本部分中列出的所有步骤。下面列出了所有必需的步骤。
- 准备 Google Cloud 项目
- 所需 BigQuery 角色
- 准备 Amazon S3 存储桶
- 创建具有所需权限的 Snowflake 用户
- 添加网络政策
- 生成元数据并运行转换引擎
- 评估 Snowflake 中是否存在任何不受支持的数据类型
- 收集转移信息
准备 Google Cloud 项目
按照以下步骤创建和配置 Google Cloud 项目,以进行 Snowflake 转移:
创建一个 Google Cloud 项目或选择现有项目。
验证您是否已完成启用 BigQuery Data Transfer Service 所需的所有操作。
创建一个 BigQuery 数据集来存储数据。您不需要创建任何表。
所需 BigQuery 角色
如需获得创建转移作业所需的权限,请让您的管理员为您授予 BigQuery Admin (roles/bigquery.admin
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色可提供创建转移作业所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建转移作业需要以下权限:
-
针对创建转移作业配置的用户或服务账号的
bigquery.transfers.update
权限 -
针对创建转移作业配置的用户或服务账号的
bigquery.datasets.get
权限 -
针对创建转移配置的用户或服务账号的
bigquery.datasets.update
权限
准备 Amazon S3 存储桶
如需完成 Snowflake 数据转移,您必须创建 Amazon S3 存储桶,然后将其配置为允许从 Snowflake 进行写入访问。
创建 Amazon S3 存储桶。Amazon S3 存储桶用于在将数据加载到 BigQuery 之前对数据进行暂存。
创建并配置 Snowflake 存储集成对象,以允许 Snowflake 将数据写入 Amazon S3 存储桶作为外部阶段。
如需允许对 Amazon S3 存储桶进行读取访问,您还必须执行以下操作:
创建专用的 Amazon IAM 用户,并为其授予 AmazonS3ReadOnlyAccess 政策。
为 IAM 用户创建 Amazon 访问密钥对。
创建具有所需权限的 Snowflake 用户
在 Snowflake 转移期间,Snowflake 连接器会使用 JDBC 连接连接到您的 Snowflake 账号。您必须创建一个新的 Snowflake 用户,并为其分配自定义角色,该角色仅具有执行数据转移所需的权限:
// Create and configure new role, MIGRATION_ROLE GRANT USAGE ON WAREHOUSE WAREHOUSE_NAME TO ROLE MIGRATION_ROLE; GRANT USAGE ON DATABASE DATABASE_NAME TO ROLE MIGRATION_ROLE; GRANT USAGE ON SCHEMA DATABASE_NAME.SCHEMA_NAME TO ROLE MIGRATION_ROLE; // You can modify this to give select permissions for all tables in a schema GRANT SELECT ON TABLE DATABASE_NAME.SCHEMA_NAME.TABLE_NAME TO ROLE MIGRATION_ROLE; GRANT USAGE ON STORAGE_INTEGRATION_OBJECT_NAME TO ROLE MIGRATION_ROLE;
替换以下内容:
MIGRATION_ROLE
:您要创建的自定义角色的名称WAREHOUSE_NAME
:数据仓库的名称DATABASE_NAME
:Snowflake 数据库的名称SCHEMA_NAME
:Snowflake 架构的名称TABLE_NAME
:此数据转移作业中包含的 Snowflake 的名称STORAGE_INTEGRATION_OBJECT_NAME
:Snowflake 存储集成对象的名称。
添加网络政策
对于公共连接,Snowflake 账号默认允许使用数据库凭证进行公共连接。不过,您可能配置了网络规则或政策,导致 Snowflake 连接器无法连接到您的账号。在这种情况下,您必须将必要的 IP 地址添加到许可清单中。
下表列出了用于公开转移作业的区域和多区域位置的 IP 地址。您可以添加仅与数据集位置对应的 IP 地址,也可以添加表中列出的所有 IP 地址。这些 IP 地址是 Google 为 BigQuery Data Transfer Service 数据转移作业预留的。
如需将 IP 地址添加到许可清单中,请执行以下操作:
- 创建网络规则,其中
type
=IPV4
。BigQuery Data Transfer Service 使用 JDBC 连接连接到 Snowflake 账号。 - 使用您之前创建的网络规则和下表中的 IP 地址创建网络政策。
单区域位置
区域说明 | 区域名称 | IP 地址 | |
---|---|---|---|
美洲 | |||
俄亥俄州,哥伦布 | us-east5 |
34.162.72.184 34.162.173.185 34.162.205.205 34.162.81.45 34.162.182.149 34.162.59.92 34.162.157.190 34.162.191.145 |
|
达拉斯 | us-south1 |
34.174.172.89 34.174.40.67 34.174.5.11 34.174.96.109 34.174.148.99 34.174.176.19 34.174.253.135 34.174.129.163 |
|
艾奥瓦 | us-central1 |
34.121.70.114 34.71.81.17 34.122.223.84 34.121.145.212 35.232.1.105 35.202.145.227 35.226.82.216 35.225.241.102 |
|
拉斯维加斯 | us-west4 |
34.125.53.201 34.125.69.174 34.125.159.85 34.125.152.1 34.125.195.166 34.125.50.249 34.125.68.55 34.125.91.116 |
|
洛杉矶 | us-west2 |
35.236.59.167 34.94.132.139 34.94.207.21 34.94.81.187 34.94.88.122 35.235.101.187 34.94.238.66 34.94.195.77 |
|
墨西哥 | northamerica-south1 |
34.51.6.35 34.51.7.113 34.51.12.83 34.51.10.94 34.51.11.219 34.51.11.52 34.51.2.114 34.51.15.251 |
|
蒙特利尔 | northamerica-northeast1 |
34.95.20.253 35.203.31.219 34.95.22.233 34.95.27.99 35.203.12.23 35.203.39.46 35.203.116.49 35.203.104.223 |
|
北弗吉尼亚 | us-east4 |
35.245.95.250 35.245.126.228 35.236.225.172 35.245.86.140 35.199.31.35 35.199.19.115 35.230.167.48 35.245.128.132 35.245.111.126 35.236.209.21 |
|
俄勒冈 | us-west1 |
35.197.117.207 35.199.178.12 35.197.86.233 34.82.155.140 35.247.28.48 35.247.31.246 35.247.106.13 34.105.85.54 |
|
盐湖城 | us-west3 |
34.106.37.58 34.106.85.113 34.106.28.153 34.106.64.121 34.106.246.131 34.106.56.150 34.106.41.31 34.106.182.92 |
|
圣保罗 | southamerica-east1 |
35.199.88.228 34.95.169.140 35.198.53.30 34.95.144.215 35.247.250.120 35.247.255.158 34.95.231.121 35.198.8.157 |
|
圣地亚哥 | southamerica-west1 |
34.176.188.48 34.176.38.192 34.176.205.134 34.176.102.161 34.176.197.198 34.176.223.236 34.176.47.188 34.176.14.80 |
|
南卡罗来纳 | us-east1 |
35.196.207.183 35.237.231.98 104.196.102.222 35.231.13.201 34.75.129.215 34.75.127.9 35.229.36.137 35.237.91.139 |
|
多伦多 | northamerica-northeast2 |
34.124.116.108 34.124.116.107 34.124.116.102 34.124.116.80 34.124.116.72 34.124.116.85 34.124.116.20 34.124.116.68 |
|
欧洲 | |||
比利时 | europe-west1 |
35.240.36.149 35.205.171.56 34.76.234.4 35.205.38.234 34.77.237.73 35.195.107.238 35.195.52.87 34.76.102.189 |
|
柏林 | europe-west10 |
34.32.28.80 34.32.31.206 34.32.19.49 34.32.33.71 34.32.15.174 34.32.23.7 34.32.1.208 34.32.8.3 |
|
芬兰 | europe-north1 |
35.228.35.94 35.228.183.156 35.228.211.18 35.228.146.84 35.228.103.114 35.228.53.184 35.228.203.85 35.228.183.138 |
|
法兰克福 | europe-west3 |
35.246.153.144 35.198.80.78 35.246.181.106 35.246.211.135 34.89.165.108 35.198.68.187 35.242.223.6 34.89.137.180 |
|
伦敦 | europe-west2 |
35.189.119.113 35.189.101.107 35.189.69.131 35.197.205.93 35.189.121.178 35.189.121.41 35.189.85.30 35.197.195.192 |
|
马德里 | europe-southwest1 |
34.175.99.115 34.175.186.237 34.175.39.130 34.175.135.49 34.175.1.49 34.175.95.94 34.175.102.118 34.175.166.114 |
|
米兰 | europe-west8 |
34.154.183.149 34.154.40.104 34.154.59.51 34.154.86.2 34.154.182.20 34.154.127.144 34.154.201.251 34.154.0.104 |
|
荷兰 | europe-west4 |
35.204.237.173 35.204.18.163 34.91.86.224 34.90.184.136 34.91.115.67 34.90.218.6 34.91.147.143 34.91.253.1 |
|
巴黎 | europe-west9 |
34.163.76.229 34.163.153.68 34.155.181.30 34.155.85.234 34.155.230.192 34.155.175.220 34.163.68.177 34.163.157.151 |
|
斯德哥尔摩 | europe-north2 |
34.51.133.48 34.51.136.177 34.51.128.140 34.51.141.252 34.51.139.127 34.51.142.55 34.51.134.218 34.51.138.9 |
|
都灵 | europe-west12 |
34.17.15.186 34.17.44.123 34.17.41.160 34.17.47.82 34.17.43.109 34.17.38.236 34.17.34.223 34.17.16.47 |
|
华沙 | europe-central2 |
34.118.72.8 34.118.45.245 34.118.69.169 34.116.244.189 34.116.170.150 34.118.97.148 34.116.148.164 34.116.168.127 |
|
苏黎世 | europe-west6 |
34.65.205.160 34.65.121.140 34.65.196.143 34.65.9.133 34.65.156.193 34.65.216.124 34.65.233.83 34.65.168.250 |
|
亚太地区 | |||
德里 | asia-south2 |
34.126.212.96 34.126.212.85 34.126.208.224 34.126.212.94 34.126.208.226 34.126.212.232 34.126.212.93 34.126.212.206 |
|
香港 | asia-east2 |
34.92.245.180 35.241.116.105 35.220.240.216 35.220.188.244 34.92.196.78 34.92.165.209 35.220.193.228 34.96.153.178 |
|
雅加达 | asia-southeast2 |
34.101.79.105 34.101.129.32 34.101.244.197 34.101.100.180 34.101.109.205 34.101.185.189 34.101.179.27 34.101.197.251 |
|
墨尔本 | australia-southeast2 |
34.126.196.95 34.126.196.106 34.126.196.126 34.126.196.96 34.126.196.112 34.126.196.99 34.126.196.76 34.126.196.68 |
|
孟买 | asia-south1 |
34.93.67.112 35.244.0.1 35.200.245.13 35.200.203.161 34.93.209.130 34.93.120.224 35.244.10.12 35.200.186.100 |
|
大阪 | asia-northeast2 |
34.97.94.51 34.97.118.176 34.97.63.76 34.97.159.156 34.97.113.218 34.97.4.108 34.97.119.140 34.97.30.191 |
|
首尔 | asia-northeast3 |
34.64.152.215 34.64.140.241 34.64.133.199 34.64.174.192 34.64.145.219 34.64.136.56 34.64.247.158 34.64.135.220 |
|
新加坡 | asia-southeast1 |
34.87.12.235 34.87.63.5 34.87.91.51 35.198.197.191 35.240.253.175 35.247.165.193 35.247.181.82 35.247.189.103 |
|
悉尼 | australia-southeast1 |
35.189.33.150 35.189.38.5 35.189.29.88 35.189.22.179 35.189.20.163 35.189.29.83 35.189.31.141 35.189.14.219 |
|
台湾 | asia-east1 |
35.221.201.20 35.194.177.253 34.80.17.79 34.80.178.20 34.80.174.198 35.201.132.11 35.201.223.177 35.229.251.28 35.185.155.147 35.194.232.172 |
|
东京 | asia-northeast1 |
34.85.11.246 34.85.30.58 34.85.8.125 34.85.38.59 34.85.31.67 34.85.36.143 34.85.32.222 34.85.18.128 34.85.23.202 34.85.35.192 |
|
中东 | |||
Dammam | me-central2 |
34.166.20.177 34.166.10.104 34.166.21.128 34.166.19.184 34.166.20.83 34.166.18.138 34.166.18.48 34.166.23.171 |
|
多哈 | me-central1 |
34.18.48.121 34.18.25.208 34.18.38.183 34.18.33.25 34.18.21.203 34.18.21.80 34.18.36.126 34.18.23.252 |
|
特拉维夫 | me-west1 |
34.165.184.115 34.165.110.74 34.165.174.16 34.165.28.235 34.165.170.172 34.165.187.98 34.165.85.64 34.165.245.97 |
|
非洲 | |||
约翰内斯堡 | africa-south1 |
34.35.11.24 34.35.10.66 34.35.8.32 34.35.3.248 34.35.2.113 34.35.5.61 34.35.7.53 34.35.3.17 |
多区域位置
多区域说明 | 多区域名称 | IP 地址 |
---|---|---|
欧盟成员国的数据中心1 | EU |
34.76.156.158 34.76.156.172 34.76.136.146 34.76.1.29 34.76.156.232 34.76.156.81 34.76.156.246 34.76.102.206 34.76.129.246 34.76.121.168 |
美国的数据中心 | US |
35.185.196.212 35.197.102.120 35.185.224.10 35.185.228.170 35.197.5.235 35.185.206.139 35.197.67.234 35.197.38.65 35.185.202.229 35.185.200.120 |
1 位于 EU
多区域的数据不会存储在 europe-west2
(伦敦)或 europe-west6
(苏黎世)数据中心中。
生成元数据并运行转换引擎
在将 Snowflake 表迁移到 BigQuery 时,适用于 Snowflake 的 BigQuery Data Transfer Service 连接器会使用 BigQuery 迁移服务转换引擎进行架构映射。如需完成 Snowflake 数据转移,您必须先生成元数据以进行转换,然后运行转换引擎:
- 为 Snowflake 运行
dwh-migration-tool
。如需了解详情,请参阅生成元数据以进行转换和评估。 - 将生成的
metadata.zip
文件上传到 Cloud Storage 存储桶。metadata.zip
文件用作转换引擎的输入。 运行批量转换服务,并将
target_types
字段指定为metadata
。如需了解详情,请参阅使用 Translation API 转换 SQL 查询。- 以下是用于为 Snowflake 运行批量转换的命令示例:
curl -d "{ \"name\": \"sf_2_bq_translation\", \"displayName\": \"Snowflake to BigQuery Translation\", \"tasks\": { string: { \"type\": \"Snowflake2BigQuery_Translation\", \"translation_details\": { \"target_base_uri\": \"gs://sf_test_translation/output\", \"source_target_mapping\": { \"source_spec\": { \"base_uri\": \"gs://sf_test_translation/input\" } }, \"target_types\": \"metadata\", } } }, }" \ -H "Content-Type:application/json" \ -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/project_id/locations/location/workflows
- 您可以在 BigQuery 的 SQL 转换页面中查看此命令的状态。批量转换作业的输出存储在
gs://translation_target_base_uri/metadata/config/
中。
所需的服务账号权限
在 Snowflake 转移中,服务账号用于从指定的 Cloud Storage 路径中的转换引擎输出读取数据。您必须向服务账号授予 storage.objects.get
和 storage.objects.list
权限。
如果服务账号来自与创建 BigQuery 数据转移作业的项目不同的 Google Cloud 项目,则您还必须启用跨项目服务账号授权。
如需了解详情,请参阅 BigQuery IAM 角色和权限。
评估 Snowflake 数据
BigQuery 会以 Parquet 文件的形式将数据从 Snowflake 写入 Cloud Storage。Parquet 文件不支持 TIMESTAMP_TZ
和 TIMESTAMP_LTZ
数据类型。如果您的数据包含这些类型,您可以将其以 CSV 文件的形式导出到 Amazon S3,然后将 CSV 文件导入到 BigQuery 中。如需了解详情,请参阅 Amazon S3 转移作业概览。
收集转移信息
收集使用 BigQuery Data Transfer Service 设置迁移所需的信息:
- 您的 Snowflake 账号标识符,即 Snowflake 账号网址中的前缀。例如
ACCOUNT_IDENTIFIER.snowflakecomputing.com
。 - 对 Snowflake 数据库具有适当权限的用户的用户名和密码。它只需要具备执行数据转移作业所需的权限。
- 您要用于转移作业的 Amazon S3 存储桶的 URI,以及 AWS 用户访问密钥对。我们建议您为此存储桶设置生命周期政策,以避免产生不必要的费用。
- 您在其中存储从转换引擎获取的架构映射文件的 Cloud Storage 存储桶的 URI。
设置 Snowflake 转移作业
从下列选项中选择一项:
控制台
前往 Google Cloud 控制台中的“数据转移”页面。
点击
创建转移作业。在来源类型部分的来源列表中选择 Snowflake 迁移。
在转移配置名称部分的显示名字段中,输入转移作业的名称,例如
My migration
。显示名称可以是任何容易辨识的值,让您以后在需要修改转移作业时时能够轻松识别。在目标设置部分中,从数据集列表中选择您创建的数据集。
在数据源详细信息部分,执行以下操作:
- 在账号标识符字段中,输入 Snowflake 账号的唯一标识符,即组织名称和账号名称的组合。该标识符是 Snowflake 账号网址的前缀,而不是完整的网址。例如
ACCOUNT_IDENTIFIER.snowflakecomputing.com
。 - 在用户名字段中,输入 Snowflake 用户的用户名,系统会使用其凭证和授权来访问您的数据库以转移 Snowflake 表。我们建议您使用为此转移作业创建的用户。
- 在密码字段中,输入 Snowflake 用户的密码。
- 在仓库字段中,输入用于执行此数据转移作业的仓库。
- 在服务账号字段中,输入要用于此数据转移作业的服务账号。该服务账号应属于在其中创建转移作业配置和目标数据集的同一Google Cloud 项目。服务账号必须具有
storage.objects.list
和storage.objects.get
所需的权限。 - 在数据库字段中,输入包含此数据转移作业中所含表的 Snowflake 数据库的名称。
- 在架构字段中,输入包含此数据转移作业中所含表的 Snowflake 架构的名称。
在表名称模式字段中,通过输入与架构中的表名称匹配的名称或模式来指定要转移的表。您可以使用正则表达式指定模式,例如
table1_regex;table2_regex
。此模式应遵循 Java 正则表达式语法。 例如,lineitem;ordertb
匹配名为lineitem
和ordertb
的表。.*
匹配所有表。
在转换输出 GCS 路径字段中,指定包含转换引擎中的架构映射文件的 Cloud Storage 文件夹的路径。
- 该路径应遵循
gs:/translation_target_base_uri/metadata/config/db/schema/
格式,并且必须以/
结尾。
- 该路径应遵循
在存储集成对象名称字段中,输入 Snowflake 存储集成对象的名称。在此示例中为
S3
。在云服务提供商字段中,选择
AWS
。在 GCS URI、Azure 存储账号名称、Azure 容器名称、Azure SAS 字段中,将这些字段留空。
在 Amazon S3 URI 字段中,输入用作暂存区的 S3 存储桶的 URI。
在 访问密钥 ID 和私有访问密钥字段中,输入访问密钥对。
- 在账号标识符字段中,输入 Snowflake 账号的唯一标识符,即组织名称和账号名称的组合。该标识符是 Snowflake 账号网址的前缀,而不是完整的网址。例如
可选:在通知选项部分,执行以下操作:
点击保存。
Google Cloud 控制台会显示所有转移作业设置详细信息,包括此转移作业的资源名称。
bq
输入 bq mk
命令并提供转移作业创建标志 --transfer_config
。此外,还必须提供以下标志:
--project_id
--data_source
--target_dataset
--display_name
--params
bq mk \ --transfer_config \ --project_id=project_id \ --data_source=data_source \ --target_dataset=dataset \ --display_name=name \ --service_account_name=service_account \ --params='parameters'
替换以下内容:
- project_id:您的 Google Cloud 项目 ID。 如果未指定
--project_id
,系统会使用默认项目。 - data_source:数据源
snowflake_migration
。 - dataset:转移作业配置的 BigQuery 目标数据集。
- name:转移作业配置的显示名。 转移作业名称可以是任何可让您在需要修改转移作业时识别该转移作业的名称。
- service_account:(可选)用于对转移作业进行身份验证的服务账号名称。该服务账号应属于用于创建转移作业的同一
project_id
,并且应具有所有所需的角色。 - parameters:所创建转移作业配置的参数(采用 JSON 格式)。例如:
--params='{"param":"param_value"}'
。
Snowflake 转移作业配置需要的参数包括:
account_identifier
:Snowflake 账号的唯一标识符,即组织名称和账号名称的组合。该标识符是 Snowflake 账号网址的前缀,而不是完整的网址。例如account_identifier.snowflakecomputing.com
。username
:Snowflake 用户的用户名,系统会使用其凭证和授权来访问您的数据库以转移 Snowflake 表。password
:输入 Snowflake 用户的密码。warehouse
:输入用于执行此数据转移作业的仓库。service_account
:输入要用于此数据转移作业的服务账号。该服务账号应属于在其中创建转移作业配置和目标数据集的同一 Google Cloud 项目。服务账号必须具有storage.objects.list
和storage.objects.get
所需的权限。database
:输入包含此数据转移作业中所含表的 Snowflake 数据库的名称。schema
:输入包含此数据转移作业中所含表的 Snowflake 架构的名称。table_name_patterns
:通过输入与架构中的表名称匹配的名称或模式来指定要转移的表。您可以使用正则表达式来指定模式,例如table1_regex;table2_regex
。此模式应遵循 Java 正则表达式语法。例如,lineitem;ordertb
匹配名为lineitem
和ordertb
的表。.*
匹配所有表。您也可以将此字段留空,以迁移指定架构中的所有表。
translation_output_gcs_path
:指定包含转换引擎中的架构映射文件的 Cloud Storage 文件夹的路径。- 该路径应遵循
gs:/translation_target_base_uri/metadata/config/db/schema/
格式,并且必须以/
结尾。
- 该路径应遵循
storage_integration_object_name
:输入 Snowflake 存储集成对象的名称。在此示例中为S3
。cloud_provider
:输入AWS
。amazon_s3_uri
:输入要用作暂存区的 S3 存储桶的 URI。aws_access_key_id
:输入访问密钥对。aws_secret_access_key
:输入访问密钥对。
例如,以下命令会创建一个名为 snowflake transfer config
的 Snowflake 转移作业,其目标数据集名为 your_bq_dataset
,项目 ID 为 your_project_id
。
PARAMS='{ "account_identifier": "your_account_identifier", "aws_access_key_id": "your_access_key_id", "aws_secret_access_key": "your_aws_secret_access_key", "cloud_provider": "AWS", "database": "your_sf_database", "password": "your_sf_password", "schema": "your_snowflake_schema", "service_account": "your_service_account", "storage_integration_object_name": "your_storage_integration_object", "staging_s3_uri": "s3://your/s3/bucket/uri", "table_name_patterns": ".*", "translation_output_gcs_path": "gs://sf_test_translation/output/metadata/config/database_name/schema_name/", "username": "your_sf_username", "warehouse": "your_warehouse" }' bq mk --transfer_config \ --project_id=your_project_id \ --target_dataset=your_bq_dataset \ --display_name='snowflake transfer config' \ --params="$PARAMS" \ --data_source=snowflake_migration
API
使用 projects.locations.transferConfigs.create
方法并提供一个 TransferConfig
资源实例。
配额和限制
对于每个表的每个加载作业,BigQuery 都有 15 TB 的加载配额。 Snowflake 会在内部执行表数据压缩,因此实际导出的表大小会超过 Snowflake 报告的表大小。如果您打算迁移的表大小超过 15 TB,请联系 dts-migration-preview-support@google.com。
由于 Amazon S3 的一致性模型要求,向 BigQuery 转移的作业中可能不包括某些文件。
价格
如需了解 BigQuery Data Transfer Service 价格,请参阅价格页面。
- 如果 Snowflake 仓库和 Amazon S3 存储桶位于不同的区域,则当您运行 Snowflake 数据转移作业时,Snowflake 会收取出站流量费用。如果 Snowflake 仓库和 Amazon S3 存储桶位于同一区域,则 Snowflake 数据转移作业不会产生出站流量费用。
- 将数据从 AWS 转移到 Google Cloud时,会产生云间出站流量费用。
后续步骤
- 详细了解 BigQuery Data Transfer Service。
- 使用批量 SQL 转换迁移 SQL 代码。