首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何清空SQL数据库?

如何清空SQL数据库?
EN

Stack Overflow用户
提问于 2010-01-22 22:07:10
回答 2查看 57K关注 0票数 18

我正在寻找一种简单的方法来删除数据库中的所有数据,并保留结构(表,关系等)。我使用的是postgreSQL,但我认为,如果有一个命令可以做到这一点,它不是特定于postgres的。

谢谢,

达米恩

EN

回答 2

Stack Overflow用户

发布于 2010-01-22 22:28:06

你可以这样做:

代码语言:javascript
复制
export PGUSER=your_pg_user
export PGHOST=database.host
export PGPORT=port
export PGDATABASE=your_database

psql -qAtX -c "select 'TRUNCATE table ' || quote_ident(table_schema) || '.' || quote_ident(table_name) || ' CASCADE;' from information_schema.tables where table_type = 'BASE TABLE' and not table_schema ~ '^(information_schema|pg_.*)$'" | psql -qAtX

它会做必要的事情。

当然,这些导出并不是必需的,但它们将使运行两个psql副本变得更简单,而不必为它们提供所有标准的-U、-d等开关。

不过有一件事--使用TRUNCATE来做这件事,虽然比DELETE更快,但有它的后遗症-例如- Slony和任何其他在触发器上工作的复制系统都不会复制它。除非您正在使用PostgreSQL 8.4,并且您的复制知道如何在TRUNCATE上使用触发器。

票数 6
EN

Stack Overflow用户

发布于 2010-01-22 22:10:24

我不喜欢Postgres,但一种选择是遍历这些表,并对每个表发出一个Truncate命令。尽管如此,你必须考虑到otable关系--例如,你不能在引用数据之前删除引用数据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2117708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档