使用交互式 SQL 转换器来转换查询

本文档介绍如何使用 BigQuery 交互式 SQL 转换器将查询从其他 SQL 方言转换为 GoogleSQL 查询。当您将工作负载迁移到 BigQuery 时,交互式 SQL 转换器可以帮助减少时间和工作量。本文档适用于熟悉 Google Cloud 控制台的用户。

准备工作

如果您的 Google Cloud CLI 项目是在 2022 年 2 月 15 日之前创建的,请按如下方式启用 BigQuery Migration API:

  1. 在 Google Cloud 控制台中,转到 BigQuery Migration API 页面。

    前往 BigQuery Migration API

  2. 点击启用

权限和角色

本部分介绍使用交互式 SQL 转换器所需的 Identity and Access Management (IAM) 权限,包括授予这些权限的预定义 IAM 角色。本部分还介绍了设置其他转换配置所需的权限。

使用交互式 SQL 转换器的权限

如需使用交互式 SQL 转换器,您需要具有以下权限:

  • bigquerymigration.translation.translate

以下预定义的 IAM 角色提供使用交互式 SQL 转换器所需的权限:

  • roles/bigquerymigration.translationUser

要通过交互式 SQL 转换器运行查询,您需要具有与在 BigQuery 中运行查询时相同的权限。例如,要查询表,您必须拥有读取表数据的权限。如需了解详情,请参阅查询 BigQuery 数据

设置其他转换配置的权限

您可以使用转换设置中的转换配置 ID转换配置来源位置字段来设置其他转换配置。如需设置这些转换配置,您需要以下权限:

  • bigquerymigration.workflows.get
  • bigquerymigration.workflows.list

以下预定义的 IAM 角色提供了设置其他转换配置所需的权限:

  • roles/bigquerymigration.viewer

如需详细了解 BigQuery IAM,请参阅使用 IAM 进行访问权限控制

支持的 SQL 语言

BigQuery 交互式 SQL 转换器可以将以下 SQL 方言转换为 GoogleSQL:

  • Amazon Redshift SQL
  • Apache HiveQL 和 Beeline CLI
  • IBM Netezza SQL 和 NZPLSQL
  • Teradata 和 Teradata Vantage
    • SQL
    • Basic Teradata Query (BTEQ)
    • Teradata 并行传输 (TPT)

此外,预览版还支持转换以下 SQL 方言:

  • Apache Spark SQL
  • Azure Synapse T-SQL
  • MySQL SQL
  • Oracle SQL、PL/SQL、Exadata
  • PostgreSQL SQL
  • Trino 或 PrestoSQL
  • Snowflake SQL
  • SQL Server T-SQL
  • SQLite
  • Vertica SQL

将查询转换为 GoogleSQL

请按照以下步骤将查询转换为 GoogleSQL:

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 编辑器窗格中,点击更多,然后选择转换设置

  3. 源方言部分,选择要转换的 SQL 方言。

  4. 可选。在处理位置部分,选择要运行转换作业的位置。例如,如果您在欧洲,并且不希望您的数据跨越任何位置边界,那么请选择 eu 区域。

  5. 点击保存

  6. 编辑器窗格中,点击更多,然后选择启用 SQL 转换

    编辑器窗格拆分为两个窗格。

  7. 在左侧窗格中,输入要转换的查询。

  8. 点击翻译

    BigQuery 将查询转换为 GoogleSQL,并将其显示在右侧窗格中。例如,下面的屏幕截图显示了转换后的 Teradata SQL:

    显示已转换为 GoogleSQL 的 Teradata SQL 查询

  9. 可选:如需运行转换后的 GoogleSQL 查询,请点击运行

  10. 可选:如需返回到 SQL 编辑器,请点击更多,然后选择停用 SQL 转换

    编辑器窗格随即会恢复为单个窗格。

提升交互式转换作业性能

如需提高稳定性并防止长时间运行的交互式转换作业出现网络超时问题(例如,使用大型元数据文件软件包),请启用整合转换 API。整合转换 API 将交互式转换器和批量转换器合并到单个工作流中,从而提高交互式转换作业的效率和稳定性。

所需的角色

如需获得将整合转换 API 与交互式转换器搭配使用所需的权限,请让您的管理员为您授予 parent 资源的 MigrationWorkflow Editor (roles/bigquerymigration.editor) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色可提供将整合转换 API 与交互式转换器搭配使用所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需将整合转换 API 与交互式转换器搭配使用,需要以下权限:

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get

您也可以使用自定义角色或其他预定义角色来获取这些权限。

启用整合转换 API

如需为交互式转换器启用整合转换 API,请填写整合转换 API 许可名单表单。如需详细了解如何将整合转换 API 与批量 SQL 转换器搭配使用,请参阅提交转换作业中的 API 说明。

使用其他配置转换查询

您可以通过提供批量转换配置 ID 或使用存储在 Cloud Storage 文件夹中的配置文件来运行具有其他转换配置的交互式查询。转换配置可能包括来自源数据库的 SQL 对象元数据或对象映射信息,这些信息可提高转换质量。例如,添加源数据库中的 DDL 信息或架构可以提高交互式 SQL 转换质量。

如需通过提供批量转换配置 ID 来指定转换配置,请执行以下操作:

  1. 在查询编辑器中,点击更多 > 转换设置
  2. 转换配置 ID 字段中,提供批量转换配置 ID,以应用已完成的 BigQuery 批量迁移作业中的相同转换配置。

    如需查找作业的批量转换配置 ID,请从 SQL 转换页面中选择批量转换作业,然后点击转换配置标签页。批量转换配置 ID 列为资源名称

  3. 点击保存

如需通过提供转换配置源文件来指定转换配置,请执行以下操作:

  1. 在查询编辑器中,点击更多 > 转换设置
  2. 转换配置来源位置字段中,指定存储在 Cloud Storage 文件夹中的转换配置文件的路径。

    BigQuery 交互式 SQL 转换器支持包含转换元数据对象名称映射的配置文件。如需了解如何将文件上传到 Cloud Storage,请参阅从文件系统上传对象

  3. 点击保存

配置文件大小限制

将转换配置文件与 BigQuery 交互式 SQL 转换器一起使用时,压缩的元数据文件或 YAML 配置文件必须小于 50 MB。如果文件大小超过 50 MB,交互式转换器会在转换期间跳过该配置文件,并生成类似于以下内容的错误消息:

CONFIG ERROR: Skip reading file "gs://metadata-file.zip". File size (150,000,000 bytes) exceeds limit (50 MB).

减小元数据文件大小的一种方法是使用 --database--schema 标志,以便仅提取与转换输入查询相关的数据库或架构的元数据。如需详细了解如何在生成元数据文件时使用这些标志,请参阅全局标志

限制

交互式 SQL 转换器没有任何关于您输入进行转换的查询的架构信息。为了确保最准确的转换,请在查询之前输入查询中使用的任何表的数据定义语言 (DDL) 语句。例如,如果要转换 Amazon Redshift 查询 select table1.field1, table2.field1 from table1, table2 where table1.id = table2.id;,您需要将以下 SQL 语句输入到交互式 SQL 转换器中:

create table schema1.table1 (id int, field1 int, field2 varchar(16));
create table schema1.table2 (id int, field1 varchar(30), field2 date);

select table1.field1, table2.field1
from table1, table2
where table1.id = table2.id;

位置

交互式 SQL 转换器在以下处理位置提供:

  • us(美国多区域)
  • eu(欧盟多区域)
  • southamerica-east1(圣保罗)
  • us-central1(爱荷华)
  • asia-northeast1(东京)
  • asia-south1(孟买)
  • asia-southeast1(新加坡)
  • australia-southeast1(悉尼)
  • europe-central2(华沙)
  • europe-north1(芬兰)
  • europe-west1(比利时)
  • europe-west2(伦敦)
  • europe-west3(法兰克福)

价格

使用交互式 SQL 转换器无需付费。但是,用于存储输入和输出文件的存储空间会产生正常费用。如需了解详情,请参阅存储价格

后续步骤

详细了解迁移数据仓库的以下步骤: