在BigQuery中使用声明和循环来插入数据

时间:2019-03-30 15:45:42

标签: loops google-bigquery

我只是练习使用Bigquery并尝试在其中使用我的SQL查询之一

declare @id int 
select @id = 1
while @id >=1 and @id <= 1000
begin
    insert into Quincy values(@id, 'Rank: ' + convert(varchar(5), @id))
end

此语句对表运行了1000次插入,我注意到bigquery不允许在其上声明值,因此@id在这里不起作用。我可以在BigQuery上像这样运行循环吗?

1 个答案:

答案 0 :(得分:1)

在处理sql时,最好不要使用基于游标的逻辑,而是需要将自己调整为基于集的处理。尤其是对于BigQuery,它不支持光标处理和过程逻辑,但幸运的是,它对ARRAY具有丰富的支持,可以在此处使用

由于您的问题有点抽象-下面的示例也很抽象,但是给了您一个想法

#standardSQL
INSERT INTO `project.dataset.Quincy` (id, col)
WITH array_to_loop_through AS (
  SELECT id 
  FROM UNNEST(GENERATE_ARRAY(1, 1000, 1)) id
)
SELECT id, CONCAT('Rank: ', CAST(id AS STRING))
FROM array_to_loop_through