You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash Shell中导入尚未存在的PostgreSQL数据库?

如何在Bash Shell中直接导入尚未存在的PostgreSQL数据库?

核心解决方案

要在Bash中直接完成「不存在数据库的导入」,无需进入psql交互模式,可通过以下几种方式实现:


方式1:先创建数据库再导入(分两步执行)

直接在Bash中用psql -c参数执行创建数据库的SQL命令,随后执行导入操作:

# 1. 创建目标数据库(连接默认的postgres系统数据库执行创建命令)
psql -U postgres -c "CREATE DATABASE english;"
# 2. 导入数据到刚创建的数据库
psql -U postgres -d english < /tmp/database.sql

方式2:合并为单条命令执行

用&&连接两个命令,确保数据库创建成功后再执行导入:

psql -U postgres -c "CREATE DATABASE english;" && psql -U postgres -d english < /tmp/database.sql

方式3:导出时添加自动创建数据库的参数

如果导出备份时加上--create参数,备份文件会包含创建数据库的语句,导入时直接连接默认的postgres数据库即可自动完成创建+导入:

# 带--create参数导出数据库
pg_dump --no-owner --create --dbname=postgresql://postgres:password@localhost/english > /tmp/database.sql
# 直接导入,无需提前创建数据库
psql -U postgres < /tmp/database.sql

失败原因说明

之前直接导入失败是因为psql需要连接到已存在的数据库才能执行导入操作,指定不存在的english数据库作为目标时,会触发FATAL: database "english" does not exist错误。必须先确保目标数据库存在,或者让备份文件包含自动创建数据库的逻辑。

内容的提问来源于stack exchange,提问作者showkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 19:16:02