2011-12-28 72 views

回答

6

导出数据库schema的标准方法是pg_dump

#!/bin/sh 
pg_dump --schema-only MYDBNAME > output-file.sql 

Sligtly更好的方式结合的pg_dump与pg_restore列表过滤:

#!/bin/sh 
dump=`mktemp` 
list=`mktemp` 
pg_dump --schema-only MYDBNAME -Fc -f $dump 
pg_restore -l $dump | grep ' TABLE ' > $list 
pg_restore -L $list $dump > output-file.sql 
rm $list $dump 

如果你喜欢GUI向导,可以在生成pg_dump的命令PgAdmin III

  • ri ght点击对象浏览器中的数据库,选择“备份”
  • 选择目标文件名(常用扩展名为.sql或.txt)
  • 选择“Plain”格式。 (即文本格式)
  • 的“转储选项#1”选项卡,勾选“仅架构”
  • 点击“备份”

注:生成的文件将不仅表,但也所有其他对象(视图,功能等)。如果你只需要最小的打印输出,你可以在文本编辑器中编辑这个文件并删除不需要的东西。只留下“Type:TABLE;”项目。

+0

这应该是'pg_dump'而不是'psql' –

+0

thx @ a-horse-with-no-name,corrected – filiprem

+0

使用''来避免灰色代码。 – ben

1

当你需要他们时,你可以一次做一个。右键单击pgAdminIII中的表格,转至报告并选择“数据字典报告”。

对于输出格式,选择“XHTML 1.0 Transitional”,选择“嵌入默认样式表”选项,给它一个文件名并单击确定。

在浏览器中打开XML文件并打印。

+0

如何处理数据? –

+0

是否有一种编程方式在架构内的所有表上运行pgAdminIII“数据字典报告”的等效项? – pdog

3

如果您使用的是Windows和pgAdmin,那么您应该在C:\Program files\postgresql\<version>\bin\psql的某处使用psql。

运行psql,然后你有\d,它打印所有表和索引和\d <table_name>它给你一个表的细节。