postgreSQL-psql \ i:如何在给定路径中执行脚本
时间:2020-03-06 14:41:08 来源:igfitidea点击:
我是PostgreSQL的新手,我有一个简单的问题:
我正在尝试创建一个简单的脚本来创建一个数据库,以便以后可以像这样调用它:
psql -f createDB.sql
我希望脚本调用其他脚本(用于创建表,添加约束,函数等的单独脚本),如下所示:
\i script1.sql \i script2.sql
只要createDB.sql位于同一目录中,它就可以正常工作。
但是,如果我将script2移到带有createDB的目录下,并修改createDB,则它看起来像这样:
\i script1.sql \i somedir\script2.sql
我收到一个错误:
psql:createDB.sql:2: somedir: Permission denied
我使用Windows的Postgres Plus 8.3,默认的postgres用户。
编辑:
愚蠢的我,unix斜杠解决了这个问题。
解决方案
Postgres在Linux / Unix上启动。我怀疑用修复它来扭转斜线。
\i somedir/script2.sql
如果我们需要完全合格的东西
\i c:/somedir/script2.sql
如果那不能解决问题,我的下一个猜测是我们需要转义反斜杠。
\i somedir\script2.sql
我们是否尝试过使用Unix样式的斜杠(/代替)?
\通常是转义字符或者命令字符,并且可能引起混乱。我从未遇到过此问题,但我也没有Windows,因此无法对其进行测试。
此外,权限可能基于运行psql的用户,或者可能是执行postmaster服务的用户,请检查两者是否都已读取该目录中的该文件。