[ Google - GCP ] 解决办法:BigQuery错误,Invalid uri specification. Option uri value must be a wild card URI

问题描述

使用 Google 云的数据库仓库 BigQuery 导出数据到 GS 存储桶中的过程中,出现错误:

Invalid uri specification. Option ‘uri’ value must be a wild card URI.

  • 所执行的 BigQuery 的语句如下:
EXPORT DATA OPTIONS(
  uri='gs://test_bucket/GENERATEDB_DATA.csv',
  format='CSV',
  overwrite=true,
  header=true,
  field_delimiter=',') AS
SELECT * FROM `test.test_table`
limit 50;

执行后,在命令窗口会出现错误提示,如下图所示:

在这里插入图片描述

原因分析:

从错误信息提示可以看到, 错误的原因是 URI 不正确。最终的解决办法也是修改 URI 的路径,那么到底如为什么会不正确,这里来解释一下。

首先在 GCP 中正常的官方给出的 export data 语句如下:

EXPORT DATA OPTIONS(
  uri='gs://bucket/folder/*.csv',
  format='CSV',
  overwrite=true,
  header=true,
  field_delimiter=';') AS
SELECT field1, field2 FROM mydataset.table1 ORDER BY field1 LIMIT 10

注意上面的 uri 的值是一个固定写法也就是 gs:// + bucket的名字 + 文件夹(可选) + 通配的csv文件名。而 EXPORT DATA 语法不支持直接写单个文件导出。官方的说明点击这里


解决方案:

修改 EXPORT DATA 语法,将 uri 改成通配符表达式,代码如下:

EXPORT DATA OPTIONS(
  uri='gs://test_bucket/GENERATEDB_DATA_*.csv',
  format='CSV',
  overwrite=true,
  header=true,
  field_delimiter=',') AS
SELECT * FROM `test.test_table`
limit 50;

最后再次执行成功后,在 GS 存储桶中可以看到导出的文件:

在这里插入图片描述

补充:BigQuery 支持在每个 URI 中使用单个通配符运算符 (*)。通配符可以出现在 URI 中的任何位置,但不能包含在存储桶的名称中。使用通配符运算符可指示 BigQuery 根据所提供的模式创建多个分片文件。通配符运算符会替换为数字(从 0 开始),并向左填充 12 位。例如,如果 URI 的文件名末尾处带有通配符,那么在创建文件时,第一个文件的名称末尾会附加 000000000000,第二个文件的名称末尾会附加 000000000001,依次类推。

[ 本文作者 ]   bluetata
[ 原文链接 ]   https://bluetata.blog.csdn.net/article/details/135508108
[ 最后更新 ]   01/10/2024 18:16
[ 版权声明 ]   如果您在非 CSDN 网站内看到这一行,
说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
可能导致内容不完整,请去上述的原文链接查看原文。

猜你喜欢

转载自blog.csdn.net/dietime1943/article/details/135508108