本主题介绍如何在查询 BigQuery 数据时设置查询方言。您可以使用标准 SQL 或旧版 SQL 语言。
如需了解如何使用 Google Cloud Console 开始查询数据,请参阅快速入门:使用 Cloud Console。
如需了解如何使用 bq
命令行工具开始查询数据,请参阅快速入门:使用 bq
命令行工具。
更改默认方言
用于查询数据的界面决定了默认的查询方言:
- 在 Cloud Console 和客户端库中,标准 SQL 是默认的查询方言。
- 在
bq
命令行工具和 REST API 中,旧版 SQL 是默认的查询方言。
如需切换到其他方言,请执行以下操作:
控制台
Cloud Console 的默认方言是标准 SQL。如需将方言更改为旧版 SQL,请执行以下操作:
如有必要,请点击编写新查询以打开查询编辑器窗口。
在查询编辑器下方,点击更多 > 查询设置。
点击高级选项。
在其他设置部分中,对于 SQL 方言,点击旧版。这将为此查询设置旧版 SQL 选项。点击编写新查询以创建新查询时,您必须再次选择旧版 SQL 选项。
bq
bq
命令行工具中的默认查询语言是旧版 SQL。如需切换到标准 SQL 语言,请在命令行语句中添加 --use_legacy_sql=false
或 --nouse_legacy_sql
标志。
例如:
bq query \ --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data.samples.shakespeare`'
C#
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 C# 设置说明进行操作。如需了解详情,请参阅 BigQuery C# API 参考文档。
运行查询时,默认使用标准 SQL。
使用旧版 SQL
如需在运行查询时使用旧版 SQL,请将“UseLegacySql”参数设置为“true”。
Go
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 BigQuery Go API 参考文档。
默认情况下,Go 客户端库使用标准 SQL。
使用旧版 SQL
要将查询切换回旧版,请在查询配置中利用 UseLegacySQL
属性。
Java
试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
默认情况下,Java 客户端库使用标准 SQL。
使用旧版 SQL
将 useLegacySql
参数设置为 true
即可在查询作业中使用旧版 SQL 语法。
Node.js
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 BigQuery Node.js API 参考文档。
默认情况下,Node.js 客户端库使用标准 SQL。
使用旧版 SQL
将 useLegacySql
参数设置为 true
即可在查询作业中使用旧版 SQL 语法。
PHP
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 BigQuery PHP API 参考文档。
默认情况下,PHP 客户端库使用标准 SQL。
使用旧版 SQL
将 useLegacySql
参数设置为 true
即可在查询作业中使用旧版 SQL 语法。
Python
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 BigQuery Python API 参考文档。
默认情况下,Python 客户端库使用标准 SQL。
使用旧版 SQL
将 use_legacy_sql
参数设置为 True
即可在查询作业中使用旧版 SQL 语法。
Ruby
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Ruby 设置说明进行操作。如需了解详情,请参阅 BigQuery Ruby API 参考文档。
默认情况下,Ruby 客户端库使用标准 SQL。
在 Cloud Console 中使用查询前缀
您还可以在查询中包含 SQL 方言前缀,以在 Cloud Console 中设置 SQL 方言。
通过以下前缀,您可以设置 SQL 方言:
前缀 | 说明 |
---|---|
#legacySQL |
使用旧版 SQL 运行查询 |
#standardSQL |
使用标准 SQL 运行查询 |
在 Cloud Console 中,使用查询前缀时,查询设置中的 SQL 方言选项处于停用状态。
例如,如果您将以下查询复制并粘贴到 Cloud Console 中,则 BigQuery 会使用旧版 SQL 运行查询并忽略默认设置。Cloud Console 的默认设置是标准 SQL。
#legacySQL
SELECT
weight_pounds, state, year, gestation_weeks
FROM
[bigquery-public-data:samples.natality]
ORDER BY weight_pounds DESC
LIMIT 10;
查询前缀 #legacySQL
和 #standardSQL
:
- 不区分大小写
- 必须位于查询之前
- 必须以换行符与查询分隔
某些第三方工具可能不支持这类前缀,例如它们会先修改查询文本再发送到 BigQuery。
将标准 SQL 设置为命令行工具的默认语法
如需将标准 SQL 设置为命令行工具和交互式 Shell 的默认语法,您可以修改命令行工具的配置文件:.bigqueryrc
。
如需详细了解 .bigqueryrc
,请参阅为特定于命令的标志设置默认值。
如需在 .bigqueryrc
中设置 --use_legacy_sql=false
,请执行以下操作:
在文本编辑器中打开
.bigqueryrc
。默认情况下,.bigqueryrc
应位于您的用户目录中,例如$HOME/.bigqueryrc
。将以下文本添加到该文件中。本示例将标准 SQL 设置为查询和
mk
命令(用于创建视图)的默认语法。如果您已为query
或mk
命令标志配置默认值,则无需重新添加[query]
或[mk]
。[query] --use_legacy_sql=false [mk] --use_legacy_sql=false
保存并关闭文件。
如果您使用的是交互式 Shell,则必须退出并重启,以使更改生效。
如需了解可用的命令行标志,请参阅 bq 命令行工具参考。