0

这是我用于创建数据库的 shell 命令。它作为部署脚本的一部分运行,无需人工干预即可自动创建两个数据库。

# POSTGRES
apt-get install -y postgresql
echo "CREATE ROLE deploy LOGIN ENCRYPTED PASSWORD '$APP_DB_PASS';" | sudo -u postgres psql
su postgres -c "createdb db1 --owner deploy"
su postgres -c "createdb db2 --owner deploy"
service postgresql reload

在这段代码中,有人可以解释一下我如何在这个阶段将 SQL 文件导入到 postgresql 中。

我相信它是这样的,但我还没有去工作:

psql --username=postgres < /etc/schema.sql
4

1 回答 1

0

在 debian 上,您可能需要遵循 Daniel 的评论,因为 PostgreSQL 可能配置为要求 OS 用户与 db 用户的用户名相同。

所以你需要

su postgres -c "psql -f /etc/schema.sql"

或者,您可以将所有这些数据库创建命令放在一个漂亮的小 shell 脚本中(没有 su postgres -c 部分),然后一次运行所有这些命令。就像是:

 #!/bin/bash
 echo "CREATE ROLE deploy LOGIN ENCRYPTED PASSWORD '$APP_DB_PASS';" | su postgres -c psql
 createdb db1 --owner deploy
 createdb db2 --owner deploy
 psql db1 -f /etc/schema.sql
 psql db2 -f /etc/schema.sql

然后,您可以使用 sudo 或 su -c 运行它,并简化可能出错的事情,认证方式。

于 2013-11-08T11:01:28.830 回答