代码之家  ›  专栏  ›  技术社区  ›  showkey

如何导入bashshell中还不存在的数据库?

  •  0
  • showkey  · 技术社区  · 1 年前

    导出名为的数据库 english 在bash命令中:

    pg_dump --no-owner --dbname=postgresql://postgres:password@localhost/english  > /tmp/database.sql
    

    现在我进入psql并删除数据库 英语 :

    psql -U postgres
    drop database english;
    

    然后退出。

    现在我想导入数据库 英语 这是不存在的。

    psql -U postgres -d english  < /tmp/database.sql
    #it can't work,error  
    psql: error: FATAL:  database "english" does not exist
    

    创建后可以导入整个数据库 英语 数据库优先:

    psql -U postgres
    create database english;
    press ctrl+d to exit 
    #execute in bash shell command
    psql -U postgres -d english  < /tmp/database.sql  
    

    如何导入bashshell中还不存在的数据库?

    1 回复  |  直到 1 年前
        1
  •  1
  •   Laurenz Albe    1 年前

    如果像您一样使用纯格式转储,则必须使用 --create 选项,使其包含 CREATE DATABASE 声明:

    pg_dump --create ... -f database.sql english
    

    要恢复这样的转储,请连接到数据库 postgres :

    psql -d postgres database.sql
    

    如果您使用的是自定义格式转储(我建议使用),您可以指定 --创建 当您恢复转储时。