PSQL shell中的WHILE循环问题

时间:2017-08-04 00:27:10

标签: shell while-loop psql greenplum

我正在尝试使用WHILE LOOP从PSQL shell中的表集合中插入列。代码如下:

\set start_id 909
\set end_iter 912

-- Create base table to be later inserted
DROP TABLE IF EXISTS t_base_table;
CREATE TEMP TABLE t_base_table (
...
)
DISTRIBUTED RANDOMLY;

SELECT :start_id AS iter \gset

BEGIN

  WHILE :iter <= :end_iter LOOP

    \set weekly 'table_i_want_col_from_':iter

    INSERT INTO t_base_table
      SELECT ... --same columns as in the base table
      FROM :weekly a
      GROUP BY 1,2,3,4,5,6

  SELECT :iter+1 AS iter \gset

  END LOOP;
END;

我收到了几条错误消息:

  • 错误:语法错误在“WHILE”第2行或附近第2行:WHILE 909&lt; = 912 LOOP
  • 错误:“SELECT”处或附近的语法错误第13行:SELECT 909 + 1 AS week_id
  • 错误:语法错误在“LOOP”第1行:END LOOP;
  • 处或附近

看起来当我运行脚本时,它在psql shell中被拆分(因此上面第3项中的“LINE 1”)。我想知道是因为这个语法对psql shell无效吗?或者我是以错误的方式使用\ set或\ gset。

提前感谢您提供的任何帮助!!

0 个答案:

没有答案