pgsql删除表中所有数据_如何删除PostgreSQL数据库中的所有表?

这篇博客讨论了如何从PostgreSQL数据库中删除所有表的数据,但保留数据库本身。提供了多种方法,包括使用SQL查询、PL/pgSQL函数、psql命令行以及Python脚本。这些方法涉及删除公共模式下的表格、序列、函数等。

如何从命令行中删除PostgreSQL中的所有表?

我不想删除数据库本身,只是所有的表格,并在他们所有的数据。

#1楼

根据上面的Pablo,就案例而言,从特定模式中删除:

select 'drop table "' || tablename || '" cascade;'

from pg_tables where schemaname = 'public';

#2楼

如果您有PL / PGSQL过程语言安装 ,你可以使用下面的无壳/ Perl的外部脚本删除一切。

DROP FUNCTION IF EXISTS remove_all();

CREATE FUNCTION remove_all() RETURNS void AS $$

DECLARE

rec RECORD;

cmd text;

BEGIN

cmd := '';

FOR rec IN SELECT

'DROP SEQUENCE ' || quote_ident(n.nspname) || '.'

|| quote_ident(c.relname) || ' CASCADE;' AS name

FROM

pg_catalog.pg_class AS c

LEFT JOIN

pg_catalog.pg_namespace AS n

ON

n.oid = c.relnamespace

WHERE

relkind = 'S' AND

n.nspname NOT IN ('pg_catalog', 'pg_toast') AND

pg_catalog.pg_table_is_visible(c.oid)

LOOP

cmd := cmd || rec.name;

END LOOP;

FOR rec IN SELECT

'DROP TABLE ' || quote_ident(n.nspname) || '.'

|| quote_ident(c.relname) || ' CASCADE;' AS name

FROM

pg_catalog.pg_class AS c

LEFT JOIN

pg_catalog.pg_namespace AS n

ON

n.oid = c.relnamespace WHERE relkind = 'r' AND

n.nspname NOT IN ('pg_catalog', 'pg_toast') AND

pg_catalog.pg_table_is_visible(c.oid)

LOOP

cmd := cmd || rec.name;

END LOOP;

FOR rec IN SELECT

'DROP FUNCTION ' || quote_ident(ns.nspname) || '.'

|| quote_ident(proname) || '(' || oidvectortypes(proargtypes)

|| ');' AS name

FROM

pg_proc

INNER JOIN

pg_namespace ns

ON

(pg_proc.pronamespace = ns.oid)

WHERE

ns.nspname =

'public'

ORDER BY

proname

LOOP

cmd := cmd || rec.name;

END LOOP;

EXECUTE cmd;

RETURN;

END;

$$ LANGUAGE plpgsql;

SELECT remove_all();

我建议您将其复制到文件中,然后使用“--file”或“-f”选项将文件作为输入传递给psql,而不是在“psql”提示符下输入:

psql -f clean_all_pg.sql

信用到期的信用:我编写了函数,但认为查询(或至少第一个)来自几年前其中一个pgsql邮件列表上的某个人。 不记得确切的时间或哪一个。

#3楼

在Pablo和LenW之后,这里有一个单行程,可以完成所有准备工作,然后执行:

psql -U $PGUSER $PGDB -t -c "select 'drop table \\"' || tablename || '\\" cascade;' from pg_tables where schemaname = 'public'" | psql -U $PGUSER $PGDB

注意:使用您想要的值设置或替换$PGUSER和$PGDB

#4楼

以防万一...简单的Python脚本清理Postgresql数据库

import psycopg2

import sys

# Drop all tables from a given database

try:

conn = psycopg2.connect("dbname='akcja_miasto' user='postgres' password='postgres'")

conn.set_isolation_level(0)

except:

print "Unable to connect to the database."

cur = conn.cursor()

try:

cur.execute("SELECT table_schema,table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_schema,table_name")

rows = cur.fetchall()

for row in rows:

print "dropping table: ", row[1]

cur.execute("drop table " + row[1] + " cascade")

cur.close()

conn.close()

except:

print "Error: ", sys.exc_info()[1]

确保在复制之后缩进是正确的,因为Python依赖它。

#5楼

drop schema public cascade;

应该做的伎俩。

### 中职学校网络安全理论课程大纲和教学内容 #### 2025年中职学校网络安全理论课程概述 随着信息技术的发展网络安全已成为信息化社会的重要组成部分。为了适应这一需求,中职学校的网络安全理论课程旨在培养学生具备基本的网络安全意识和技术能力,使学生能够在未来的职业生涯中应对各种网络威胁。 #### 教学目标 该课程的目标是让学生理解网络安全的基本概念、原理和技术手段,掌握常见的安全防护措施,并能应用这些知识解决实际问题。具体来说,学生应达到以下几点: - 掌握计算机网络基础架构及其工作原理; - 理解信息安全管理体系框架及其实现方法; - 学习密码学基础知识以及加密算法的应用场景; - 能够识别常见攻击方式并采取有效防御策略; #### 主要章节安排 ##### 第一章 计算机网络与互联网协议 介绍计算机网络的基础结构和服务模型,重点讲解TCP/IP五层体系结构中的各层次功能特点,特别是传输控制协议(TCP)和用户数据报协议(UDP)[^1]。 ##### 第二章 信息系统安全保障概论 探讨信息系统的脆弱性和风险评估机制,阐述如何通过物理隔离、访问控制等措施来保障系统安全性。 ##### 第三章 密码学入门 讲述对称密钥体制和非对称密钥体制的区别与发展历程,分析公钥基础设施(PKI)的工作流程及其重要性。 ##### 第四章 防火墙技术与入侵检测系统(IDS) 解释防火墙的作用原理及其分类形式(包过滤型、代理服务器型),讨论IDS的功能特性及部署建议。 ##### 第五章 Web应用程序安全 针对Web环境下的特殊挑战展开论述,如SQL注入漏洞利用、跨站脚本(XSS)攻击防范等内容。 ##### 实践环节设置 除了上述理论部分外,在每学期还设有专门实践课时用于模拟真实环境中可能遇到的安全事件处理过程,增强学生的动手操作能力和应急响应水平。 ```python # Python代码示例:简单的MD5哈希函数实现 import hashlib def md5_hash(text): hasher = hashlib.md5() hasher.update(text.encode('utf-8')) return hasher.hexdigest() print(md5_hash("example")) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值