您严重误解了 PostgreSQL 的工作原理。
app_db.sql
不是数据库,它是数据库转储。描述数据库中数据的一系列文本命令,可以重放这些数据以创建数据库。
它不像 Microsoft Access.dbx
文件或 SQLite3 数据库文件,后者是存储在可以直接操作的单个文件中的数据库。使用 PostgreSQL 数据库的唯一方法是通过客户端/服务器连接到 PostgreSQL 服务器,该服务器将实际数据库内容存储在系统相关位置/var/lib/pgsql
,您永远不需要直接操作。
要使用数据库转储,您必须使用以下命令将其还原到新的空数据库psql
中,例如:
$ createdb mydb
$ psql -f app_db.sql mydb
如果您尝试完全按照上面所写的方式运行它,这可能会因权限错误而失败。您需要为自己创建一个用户,授予该用户的所有权mydb
,并可能进行编辑pg_hba.conf
以允许自己根据您的系统设置进行身份验证。
对于具有 unix 登录名的用户,一个更现实的示例bob
可能是:
$ sudo -u postgres createuser bob
$ sudo -u postgres createdb -O bob mydb
$ psql -f dpp_db.sql -1 -v ON_ERROR_STOP=1 mydb
我强烈建议您阅读PostgreSQL 教程和用户手册。