我有一个表格列,其中包含以下文字数据:
"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"
如何在单次拍摄中执行它们而不循环遍历所有这些行并单独执行它们。
答案 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)
- 它会为您提供单行运行