我是postgreSQL的新手,我有一个简单的问题:
我正在尝试创建一个创建数据库的简单脚本,以便稍后我可以这样调用它:
psql -f createDB.sql
Run Code Online (Sandbox Code Playgroud)
我希望脚本调用其他脚本(用于创建表,添加约束,函数等的单独脚本),如下所示:
\i script1.sql
\i script2.sql
Run Code Online (Sandbox Code Playgroud)
只要createDB.sql位于同一个目录中,它就可以正常工作.
但是如果我将script2移动到createDB下的目录下,并修改createDB,它看起来像这样:
\i script1.sql
\i somedir\script2.sql
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
psql:createDB.sql:2:somedir:权限被拒绝
我正在使用Postgres Plus 8.3 for windows,默认postgres用户.
编辑:
傻傻的,unix斜线解决了这个问题.
Ste*_*e K 102
Postgres从Linux/Unix开始.我怀疑用斜线来扭转斜线.
\i somedir/script2.sql
Run Code Online (Sandbox Code Playgroud)
如果你需要完全符合条件
\i c:/somedir/script2.sql
Run Code Online (Sandbox Code Playgroud)
如果这没有解决它,我的下一个猜测是你需要逃避反斜杠.
\i somedir\\script2.sql
Run Code Online (Sandbox Code Playgroud)
您是否尝试过使用Unix样式斜杠(/而不是\)?
\往往是逃避或命令角色,可能是混乱的根源.我从未遇到过这方面的问题,但我也没有Windows,所以我无法测试它.
此外,权限可能基于运行psql的用户,或者执行postmaster服务的用户,检查两者是否已读取该目录中的该文件.
归档时间: |
|
查看次数: |
158936 次 |
最近记录: |