如何执行存储在PostgreSql表列中的查询?

时间:2015-08-06 05:56:37

标签: sql postgresql

我有一个表格列,其中包含以下文字数据:

"drop table log_history_2_2015"
"drop table log_history_3_2015"
"drop table log_history_4_2015"
"drop table log_history_5_2015"
"drop table log_history_6_2015"

如何在单次拍摄中执行它们而不循环遍历所有这些行并单独执行它们。

2 个答案:

答案 0 :(得分:5)

更通用的解决方案是使用DO块来执行动态SQL:

DO
LANGUAGE plpgsql
$$
DECLARE
  stmt text;
BEGIN
  FOR stmt IN
    SELECT statement FROM the_table
  LOOP
    EXECUTE stmt;
  END LOOP;
END;
$$;

请注意,这只会在一次交易中运行。

答案 1 :(得分:3)

使用SELECT string_agg(COLUMN_NAME,';')||chr(10) - 它会为您提供单行运行