我正在尝试使用csv
中的COPY
命令将查询导出到pgAdminIII
文件。
我正在使用此命令:
COPY (SELECT CASE WHEN cast(click as int) = 1 THEN 1
ELSE -1
END
|| ' '
|| id
|| '|'
|| 'hr_' || substring(hour, 7,8)
--|| ' dw_x' + substring(datename(dw, substring(hour,1,6) ),1,2)
|| ' |dw_' || substring(to_char(to_date(substring(hour, 1,6),'YYMMDD'), 'dy'),1,2)
|| ' |C1_' || c1
|| ' |C21_' || c21
|| ' |C22_' || substring(to_char(to_date(substring(hour, 1,6),'YYMMDD'), 'dy'),1,2) || '_' || substring(hour, 7,8)
AS COL1
FROM clickthru.train limit 10)
TO 'C:\me\train.csv' with csv;
当我跑步时,我得到:
ERROR: could not open file "C:\me\train.csv" for writing: Permission denied
SQL state: 42501
然后我尝试在psql中使用以下内容:
grant all privileges on train to public
然后使用\ z查看访问权限,返回:
但我仍然得到同样的错误。我在Windows 7机器上使用postgresql 9.4。还有其他建议吗?
答案 0 :(得分:0)
copy
将文件写入Postgrs 服务器进程的用户帐户下(这是服务器端操作)。
PostgreSQL用户必须可以访问该文件(服务器运行的用户ID),并且必须从服务器的角度指定名称
在Windows下,默认情况下这是系统的“网络帐户”。
显然该帐户对该目录没有写权限。
您有两种可能的解决方法:
\copy
命令(在psql
中)而不是