正在删除具有postgreSQL中指定的架构的表列表
我已经阅读了这方面的文档,所以我有90%的把握,但是文档没有明确说明列表大小是否有限制,或者列表的名称格式中是否也可以有模式名称。我只是想在我不小心弄乱数据库或以无法恢复的方式删除所有内容之前保持乐观 要在postgreSQL中删除大量表(近200个),请使用SQL命令:正在删除具有postgreSQL中指定的架构的表列表,sql,postgresql,list,database-schema,drop-table,Sql,Postgresql,List,Database Schema,Drop Table,我已经阅读了这方面的文档,所以我有90%的把握,但是文档没有明确说明列表大小是否有限制,或者列表的名称格式中是否也可以有模式名称。我只是想在我不小心弄乱数据库或以无法恢复的方式删除所有内容之前保持乐观 要在postgreSQL中删除大量表(近200个),请使用SQL命令: DROP TABLE schemaA.table_name, schemaB.tableA_name, schemaC.table_name, schemaC.tableB_name; 如果有人能证实,我将不胜感激。谢谢 您
DROP TABLE schemaA.table_name, schemaB.tableA_name, schemaC.table_name, schemaC.tableB_name;
如果有人能证实,我将不胜感激。谢谢 您应该可以使用带有模式的200个表列表。如果您有疑问,也可以结束交易。Postgres在事务中支持DDL。下面是我成功的跑步记录 准备:
t=# create table so(i int);
CREATE TABLE
t=# do $$ begin for i in 1..200 loop execute 'create table sol'||i||' as select 8 from so where false'; end loop; end; $$;
DO
select string_agg('public.'||tablename, ', ') from pg_tables where tablename like 'sol%';
运行:
检查:
t=# select string_agg('public.'||tablename, ', ') from pg_tables where tablename like 'sol%'; string_agg
------------
(1 row)
您应该可以使用带有模式的200个表列表。如果您有疑问,也可以结束交易。Postgres在事务中支持DDL。下面是我成功的跑步记录 准备:
t=# create table so(i int);
CREATE TABLE
t=# do $$ begin for i in 1..200 loop execute 'create table sol'||i||' as select 8 from so where false'; end loop; end; $$;
DO
select string_agg('public.'||tablename, ', ') from pg_tables where tablename like 'sol%';
运行:
检查:
t=# select string_agg('public.'||tablename, ', ') from pg_tables where tablename like 'sol%'; string_agg
------------
(1 row)
Table name是要删除的表的名称(可选模式限定),因此您可以使用模式名称。我从未一次删除过200个表,但如果列表有限制,则该命令将不会执行,没有风险。@klin和我的schemaName.tableName格式是否正确?感谢您的耐心,只是不想成为破坏数据库的人是的,schema_name.table_name.table name是要删除的表的名称(可选模式限定),因此您可以使用模式名称。我从未一次删除过200个表,但如果列表有限制,则该命令将不会执行,没有风险。@klin和我的schemaName.tableName格式是否正确?感谢您的耐心,只是不想成为破坏数据库的人是的,schema_name.table_name。感谢您的回复,您能解释一下“结束到事务”的含义吗?我的意思是您可以运行
BEGIN;下降t1,t2,t3…t200;一些自定义查询要检查;承诺
或回滚
如果检查失败感谢响应,您能否解释“结束到事务”的含义?我的意思是您可以运行开始;下降t1,t2,t3…t200;一些自定义查询要检查;承诺如果检查失败,代码>或回滚