将postgresql数据库导入命令添加到创建中

时间:2013-08-21 21:20:46

标签: sql postgresql import schema debian

这是我用于创建数据库的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

1 个答案:

答案 0 :(得分:0)

在debian上,你可能需要关注Daniel的评论,因为PostgreSQL可能被配置为要求OS用户与db用户使用相同的用户名。

所以你需要

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

或者你可以将所有这些db创建命令放在一个漂亮的小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来运行它,并简化那些可能出错的事情。