如何在PostgreSQL中使用通配符删除多个表
发布时间:2020-12-13 16:51:04 所属栏目:百科 来源:网络整理
导读:使用分区时,通常需要一次删除所有分区。 然而 DROP TABLE tablename* 不工作。 (通配符不受尊重)。 有一个优雅的(阅读:易于记住的)方式删除多个表在一个命令与通配符? 使用逗号分隔列表: DROP TABLE foo,bar,baz; 如果你真的需要一个脚爪,这一个会做它
使用分区时,通常需要一次删除所有分区。
然而 DROP TABLE tablename* 不工作。 (通配符不受尊重)。 有一个优雅的(阅读:易于记住的)方式删除多个表在一个命令与通配符?
使用逗号分隔列表:
DROP TABLE foo,bar,baz; 如果你真的需要一个脚爪,这一个会做它的工作: CREATE OR REPLACE FUNCTION footgun(IN _schema TEXT,IN _parttionbase TEXT) RETURNS void LANGUAGE plpgsql AS $$ DECLARE row record; BEGIN FOR row IN SELECT table_schema,table_name FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = _schema AND table_name ILIKE (_parttionbase || '%') LOOP EXECUTE 'DROP TABLE ' || quote_ident(row.table_schema) || '.' || quote_ident(row.table_name); RAISE INFO 'Dropped table: %',quote_ident(row.table_schema) || '.' || quote_ident(row.table_name); END LOOP; END; $$; SELECT footgun('public','tablename'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |