尝试导入的文件中的权限被拒绝


18

当我尝试使用\i不在psql.exe文件夹中的文件时,显示C:: permission denied。例如,我有一个带有SQL命令的文件,在C:\Users\Work\Desktop\School Work\load_database.sql键入\i "C:\Users\Work\Desktop\School Work\load_database.sql"时说C:: permission denied。我怎样才能解决这个问题?

我在这里找到了解决方法,将.sql文件复制到与psql.exe所在的文件夹中。

顺便说一句,\ i代表进口吗?

Answers:


34

您刚刚psql在Windows上遇到了一种特殊性。

在我的评论中,我只是想排除您确实没有必要的许可的可能性。结果表明,即使在Windows上,也必须使用“常规”斜杠而不是反斜杠,即:

\i 'C:/Users/Work/Desktop/School Work/load_database.sql'

无论您psql从哪个文件夹开始,都应该可以正常工作。注意,我使用单引号-使用双引号

"C:/Users/Work/Desktop/School Work/load_database.sql": Invalid argument

知道了谢谢。您怎么知道使用单引号而不是双引号?这是postgres的一般规则还是有什么区别?
Celeritas 2012年

1
@Celeritas我认为这是Windows如何在路径中使用双引号以及psql(以及PostgreSQL)如何在标识符中使用双引号冲​​突的结果。
dezso 2012年

在Windows10中,这对我不起作用,正斜杠等等,user68006的答案都可以,但是
Scaramouche

1
@Scaramouche感谢您的反馈!显然,并非所有被拒绝的权限都是一样的。
dezso

6

将文件放在所有人都拥有完全权限的某个目录中,例如“ c:\ tmp”

要么

为您要导入的文件设置读取权限。

我授予“所有人”阅读许可。

导入文件后,您可以撤消该权限。

Windows文件属性

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.