You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery存储过程中传递URI变量?解决LOAD DATA报错

解决BigQuery存储过程中LOAD DATA的URI错误

问题原因

你遇到的错误是因为BigQuery的LOAD DATA语句中,uris参数不支持直接使用变量构造数组(即[filename]这种写法),该语法会被识别为不支持的函数调用,导致无法设置uris参数。

解决方案

使用**动态SQL(EXECUTE IMMEDIATE)**来构建完整的LOAD DATA语句,将变量代入到URI数组中。修改后的代码如下:

begin
declare filename STRING;
declare SourceDir STRING;
declare infilename STRING;
declare load_sql STRING;

set SourceDir='dir/';
set infilename='file.csv';
set filename = CONCAT('gs://mybucket/' , SourceDir, infilename);

-- 动态拼接LOAD DATA语句
set load_sql = CONCAT(
  "LOAD DATA INTO `dataset.tablename` ",
  "FROM FILES(",
  "format='CSV',",
  "uris = ['", filename, "']",
  ");"
);

-- 执行动态SQL
EXECUTE IMMEDIATE load_sql;
end

额外说明

  • 如果需要加载多个文件,可以将多个URI拼接成数组格式,例如:uris = ['gs://mybucket/dir/file1.csv', 'gs://mybucket/dir/file2.csv'],只需在拼接load_sql时处理好逗号和引号即可。
  • 确保filename变量生成的URI格式正确,避免出现多余的斜杠、缺失引号等语法问题。

内容的提问来源于stack exchange,提问作者Mudgal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:24:51