2013-10-19 108 views
33

计算机:Mac OS X的版本10.8 数据库:Postgres的Postgres的错误:无法读取打开文件:权限被拒绝

尝试导入CSV文件到Postgres的。

​​

然后我试图

$> chown postgres /users/darchcruise/desktop/items_ordered.csv 
chown: /users/darchcruise/desktop/items_ordered.csv: Operation not permitted 

最后,我想

$> ls -l 
-rw-r--r-- 1 darchcruise staff  1016 Oct 18 21:04 items_ordered.csv 

任何帮助,非常感谢!

回答

11
chmod a+rX /users/darchcruise/ /users/darchcruise/desktop /users/darchcruise/desktop/items_ordered.csv 

这将改变您的文件夹的访问权限。请注意,每个人都可以阅读你的文件。 您不能使用chown作为没有管理权限的用户。 另请考虑学习umask以简化共享文件的创建。

+0

嗨,一小撮班轮将为你做这项工作: a ='pwd'; NumOfSlashes = $((''echo $ a | sed's/[^ /] // g'| wc -c ' - 1)); for((i = 1; i <= $ NumOfSlashes; i ++));做chmod a + rX $ a; a ='dirname $ a'; done; – Roy

82

假设psql命令行工具,您可以使用\copy而不是copy

\copy打开文件和饲料的内容到服务器,而copy告诉服务器打开的文件本身并读取它,这可能是有问题的权限,明智的,甚至是不可能的,如果客户端和服务器上使用不同的机器上运行没有文件共享之间。

在引擎盖下,\copy实现为COPY FROM stdin并且接受与服务器端COPY相同的选项。

-3

可能是您通过连接远程主机使用pgadmin,然后U正试图从您的系统更新,但它在远程系统的文件系统中搜索该文件...其面向我所面对的错误可能是它也适用于您检查它

30

将CSV文件复制到/ tmp

对我来说,这解决了这个问题。

2

如果你有pgAdmin并且很好的使用GUI,另一种方法是在模式表中右键单击希望导入文件的表格并选择“导入”浏览计算机该文件,选择您的文件的类型,您希望将数据归入的列,然后选择导入。

这是使用pgAdmin的第三和9.4版本的PostgreSQL

5

的我,当我试图将数据从远程服务器导出到本地磁盘的问题做。我没有意识到SQL copy实际上是在服务器上执行的,并且它试图写入服务器文件夹。相反,正确的做法是使用\copy这是psql命令,它会按我的预期写入本地文件系统。 http://www.postgresql.org/message-id/[email protected]om

也许这对其他人也许有用。

0

对我来说,它的工作,以简单地加sudo(或以root身份运行)为chown命令:

须藤Postgres的CHOWN /用户/ darchcruise /台式机/ items_ordered。CSV

1

复制成CSV文件/ tmp文件夹

文件中COPY命令里面的读取或不是由客户端应用程序直接由服务器写入的。因此,它们必须驻留在数据库服务器计算机上,或者可以访问,而不是客户端。它们必须可由PostgreSQL用户(服务器运行的用户标识)访问,并且可读写,而不是客户端。命名文件的COPY只允许数据库超级用户使用,因为它允许读取或写入服务器有权访问的任何文件。

相关问题