计算机:Mac OS X,版本10.8数据库:Postgres
试图将csv文件导入postgres.
pg> copy items_ordered from '/users/darchcruise/desktop/items_ordered.csv' with CSV;
ERROR: could not open file "/users/darchcruise/desktop/items_ordered.csv" for reading: Permission denied
Run Code Online (Sandbox Code Playgroud)
然后我试了一下
$> chown postgres /users/darchcruise/desktop/items_ordered.csv
chown: /users/darchcruise/desktop/items_ordered.csv: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
最后,我试过了
$> ls -l
-rw-r--r-- 1 darchcruise staff 1016 Oct 18 21:04 items_ordered.csv
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢!
Dan*_*ité 119
假设使用psql命令行工具,您可以使用\copy而不是copy.
\copy打开文件并将内容提供给服务器,同时copy告诉服务器打开文件本身并读取它,这可能是许可方面的问题,甚至不可能如果客户端和服务器在不同的机器上运行而中间没有文件共享.
在幕后,\copy实现COPY FROM stdin和接受与服务器端相同的选项COPY.
Bas*_*evs 19
chmod a+rX /users/darchcruise/ /users/darchcruise/desktop /users/darchcruise/desktop/items_ordered.csv
Run Code Online (Sandbox Code Playgroud)
这将更改您的文件夹的访问权限.请注意,每个人都可以阅读您的文件.如果没有管理权限,则不能将chown用作用户.还要考虑学习umask以简化共享文件的创建.
小智 12
将CSV文件复制到/ tmp文件夹中
COPY命令中指定的文件由服务器直接读取或写入,而不是由客户端应用程序读取或写入.因此,它们必须驻留在数据库服务器计算机上,或者可以访问它们,而不是客户端.它们必须是PostgreSQL用户(服务器运行的用户ID)可访问,可读或可写,而不是客户端.COPY命名文件只允许用于数据库超级用户,因为它允许读取或写入服务器有权访问的任何文件.
当我尝试将数据从远程服务器导出到本地磁盘时,我遇到了问题.我没有意识到SQL copy实际上是在服务器上执行的,并且它试图写入服务器文件夹.相反,正确的做法是使用\copy哪个是psql命令,它按照我的预期写入本地文件系统.http://www.postgresql.org/message-id/CAFjNrYsE4Za_KWzmfgN1_-MG7GTw_vpMRxPk=OEjAiLqLskxdA@mail.gmail.com
也许这对其他人也许有用.
| 归档时间: |
|
| 查看次数: |
96593 次 |
| 最近记录: |