PostgreSQL - 从命令行将SQL文件读入PostgreSQL数据库

时间:2014-02-14 09:53:47

标签: postgresql psql

我使用Ruby生成一堆SQL命令,并将其存储到文件中。

然后我登录到我的PostgreSQL数据库。然后我做了类似的事情:

\i /tmp/bla.sql

这会填充我的数据库。

这一切都很好,这里没问题。

我不喜欢我必须使用 \ i 的手动部分(因为我最终需要这个才能在cron作业中工作,我认为像 \ i 仅在您直接进入交互式psql提示时才可用。)

所以现在我的问题是:

是否可以从命令行使用直接开始读取外部文件的psql命令?

2 个答案:

答案 0 :(得分:3)

您可以直接使用psql命令,如下所示。 适用于Ubuntu和Mint。在Windows上它应该是完全相同的......

psql -U user -d database -f filepath

示例:

psql -U postgres -d testdb -f /home/you/file.sql

有关详情,请查看官方文档:http://www.postgresql.org/docs/current/static/app-psql.html

答案 1 :(得分:0)

当您尝试使用cron执行sql文件时,您还需要设置环境 - 数据库名称,密码等。这是一个简单的shell脚本代码段,可以完成所有操作

source /var/lib/pgsql/scripts/.pgenv
echo $PATH
psql << AAA
select current_date;
select sp_pg_myprocedure(current_date);
AAA

在.pgenv中,您可以设置诸如

之类的值
export PGPORT=<yourport>
export PGHOST=<yourhost>
export PGDATA=<yourdatadir> 

还有一个.pgpass文件,以便提供密码。 http://www.postgresql.org/docs/current/static/libpq-pgpass.html 用你想做的任何东西替换完成SELECT的部分,或者像@Kuchi所示那样做。