导出数据库的CREATE脚本


Answers:


60

要生成一个sql脚本,该脚本将创建表以存在于给定数据库中,因此请执行以下操作:

pg_dump --schema-only --no-owner the_database > create_the_tables.sql

这将为您提供一堆create table语句。为了了解它的便携性,我尝试了以下操作:

bvm$ pg_dump -s --no-owner devdb | sqlite3 so_ans.db

接着:

bvm$ sqlite3 so_ans.db .schema
CREATE TABLE courses (
    id integer NOT NULL,
    name text,
    created_by integer,
    jc text
);

有点酷。


1
这是否输出所有对象,触发器,过程等?
拉菲

2
如果用户是postgres且您正在使用Windows操作系统,则为“ pg_dump -U postgres-仅schema-无所有者文档> create_the_tables.sql”。否则,它将默认使用您的Windows用户帐户名。
Peeter Kokk

5
问题是如何使用pgAdmin而不是pg_dump。
Farrukh Najmi

145

这是使用pgAdmin创建架构脚本的方法,该脚本可与PostgreSql数据库架构比较工具(例如apgdiff)一起使用。这些说明适用于pgAdmin3。

  1. 在pgAdmin中,右键单击数据库,然后单击“备份”。
  2. 输入适当的路径和文件名(即/some/path/my_script.sql)。
  3. 在格式下拉列表中选择普通作为格式。
  4. 转到转储选项#1选项卡,然后选中“仅架构”。
  5. 然后单击备份。然后单击完成。

注意:是的,我意识到pgAdmin在幕后使用pg_dump来创建脚本,但是问题在于pgAdmin,所以这是GUI方法。


这是最新的吗?右键单击数据库时,上下文菜单中没有备份选项。工具菜单中有一个备份选项,但始终禁用,无论我选择什么(数据库,架构,单个表等)。这是Linux上的pgAdmin 1.18.1。
凯特2015年

事实证明,我只需要指定Postgres二进制路径(pg_dump所在)。这是在pgAdmin的选项中完成的(文件>选项>二进制路径并设置PG二进制路径)。这可能是因为在安装pgAdmin时没有安装独立的Postgres客户端。
2015年

这本来应该是公认的答案,两年的非pgAdmin的给定以后。所以,你让我给予好评作为其业务方案的问题的有效答案
愤怒的84

3
三年后,仍然有帮助
Kesem David

2
4年,而且还在继续。
lucid_dreamer

23

但是pgAdmin确实具有执行所需功能的功能:

右键单击要导出的数据库

从弹出菜单中选择备份

选择“格式”为平原。

选择“普通选项”仅架构


3

您可以通过phpPgAdmin来实现此目的,就像phpMyAdmin for MySQL一样。

登录到phpPgAdmin,选择数据库,然后选择export。


-2

至少在PgAdmin III 1.22.1中,您可以执行以下操作来创建CREATE脚本:1)右键单击表名2)“脚本”->“ CREATE脚本”有用于获取SELECT,DELETE等的选项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.