【问题标题】:How to import SQL dump into Postgres DB running on Vagrant instance of Ubuntu如何将 SQL 转储导入在 Ubuntu 的 Vagrant 实例上运行的 Postgres DB
【发布时间】:2017-05-21 23:13:23
【问题描述】:

我正在通过运行 ubuntu-xenial-16.04-cloudimg 框的 vagrant 实例使用 Postgres,并且我有来自另一个开发人员的 sql 转储。

顺便说一句,在我连接到 virtualbox (ubuntu) 上的 Postgres 服务器后,我尝试在我的 Win 10 主机上使用 PGAdmin IV,但它需要很长时间并且无法运行。

如何将它导入到在 virtualbox 实例上运行的 Postgres?

【问题讨论】:

  • 在本地导入或在 VM 上导入并没有太大区别。只需 ssh 进入虚拟机 (vagrant ssh) 并运行导入命令 (psql databasename < data_base_dump)
  • 问题是数据库转储驻留在主机中,但 pg 数据库从无头虚拟机运行
  • 所以在这种情况下使用vagrant synced folder 在主机和来宾之间共享转储
  • 谢谢@FrédéricHenri

标签: sql windows postgresql ubuntu vagrant


【解决方案1】:

所以给定一个 sql 转储文件为dump.sql

  1. 在 ssh 客户端上运行 vagrant ssh,例如 git bash(适用于 windows)
  2. 将转储文件放在主机上包含 vagrantfile 的目录中。因为它在客户机上默认使用syncs,或者运行vagrant rsync,只是为了确保。
  3. 导航到主机上的 vagrant 目录(例如 cd ../../ 用于窗口主机上的 ubuntu 客户机)
  4. 运行psql -h hostname -U test -d databasename -f dump.sql

【讨论】:

  • 或者,直接使用vagrant ssh-c 标志运行命令,例如:vagrant ssh -c "sudo su - postgres -c 'psql -d databasename -a -f dump.sql'" 在该命令中使用sudo su - postgres -c 以postgres 用户身份运行命令,当您不想调整用户角色并想运行某些命令,例如 COPY.. ^_^
【解决方案2】:

根据转储的格式(普通或自定义),您可以使用psqlpg_restore。 检查pg_dump 文档中的--format 选项

【讨论】:

    【解决方案3】:

    按照以下简单步骤解决我的问题:

    1. vagrant upvagrant ssh后登录操作系统
    2. 键入psql 命令
    3. 然后create database your_db_name 创建空数据库
    4. 确保转储 sql 文件位于包含 vagrantfile (cd vagrant) 的文件夹或其中的子文件夹
    5. 编写此命令将转储文件导入新创建的数据库
      your_db_name -f /path/to/the/dump.sql

    我希望这些步骤也能帮助你。

    【讨论】:

      猜你喜欢
      • 2020-04-05
      • 2021-12-12
      • 2015-09-14
      • 2020-02-08
      • 1970-01-01
      • 2015-01-18
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多