【发布时间】:2018-08-09 04:43:43
【问题描述】:
对于我的开发人员数据库的一些花哨的数据库维护,我希望能够使用查询来生成命令来更改数据库。问题是:我是 PostgreSQL 的新手。我已经尝试过了,但失败了。
所以最后,我希望有一个单列的表,每一行都是一个命令(或一组命令,视情况而定),我认为它看起来像这样......
DO $$
DECLARE
command_entry RECORD;
BEGIN
FOR command_entry IN SELECT * FROM list_of_commands
LOOP
EXECUTE command_entry;
END LOOP;
END;
$$;
表 list_of_commands 可以填充如下内容(在此示例中,它将从公共架构中删除所有表)...
CREATE TEMP TABLE list_of_commands AS
SELECT 'drop table if exists "' || tablename || '" cascade;'
FROM pg_tables
WHERE schemaname = 'public';
但是,我收到以下错误...
错误:""drop table if exists ""dummy_table"" cascade;"" 处或附近出现语法错误
LINE 1: ("drop table if exists ""dummy_table"" cascade;")
我认为这是转义字符的问题,但我不完全确定如何将其适应 A)表格的人口或 B)每行的执行。有谁知道我可以做些什么来达到预期的效果?
【问题讨论】:
标签: postgresql