Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在SQL中将数据从文件复制到表?_Postgresql - Fatal编程技术网

Postgresql 如何在SQL中将数据从文件复制到表?

Postgresql 如何在SQL中将数据从文件复制到表?,postgresql,Postgresql,如何在SQL中将数据从文件复制到表中?我在Macbook上使用pgAdmin3 表名为tutor,文件名为tutor.rtf 我使用以下查询: COPY tutor FROM /Users/.../tutor.rtf WITH DELIMITER ','; 但出现错误“权限被拒绝” 文件未锁定。那么如何解决此问题?或者是否有其他更快的方法将数据从文件复制到表,除了插入到…VALUE();?复制使用PostgreSQL server后端打开文件,因此它要求用户PostgreSQL以具有读取权限的

如何在SQL中将数据从文件复制到表中?我在Macbook上使用pgAdmin3

表名为tutor,文件名为tutor.rtf

我使用以下查询:

COPY tutor
FROM /Users/.../tutor.rtf
WITH DELIMITER ',';
但出现错误“权限被拒绝”


文件未锁定。那么如何解决此问题?或者是否有其他更快的方法将数据从文件复制到表,除了
插入到…VALUE();

复制
使用PostgreSQL server后端打开文件,因此它要求用户PostgreSQL以具有读取权限的方式运行(对于
COPY FROM
)用于所讨论的文件。它还需要与
INSERT
相同的SQL级别的表访问权限,但我怀疑是文件权限让您来到了这里

最有可能的是
postgres
postgres\uu
(取决于您安装PostgreSQL的方式)用户没有对该文件的
/Users/somepath/tutor.rtf
或某个父目录的读取权限

最简单的解决方案是使用
psql
\copy
命令,该命令使用客户端权限而不是服务器权限读取文件,并使用相对于客户端当前工作目录的路径。此命令在PgAdmin-III中不可用

较新的PgAdmin III版本在表格上下文菜单中具有导入命令。请参阅。这相当于
psql
\copy
命令,读取具有PgAdmin III应用程序访问权限的文件


或者,您可以使用服务器端的
COPY
命令,确保
/Users
up
somepath
中的每个目录都具有世界执行权限,这意味着用户可以遍历它、将cd放入其中等,但也不能在没有
r
权限的情况下列出它的内容。然后将文件设置为group
postgres
和m确保它具有组读权限,或使其具有全球可读性。

我下意识的反应是说“请发布
ls-l/Users/../tutor.rtf的结果,以便我们都能看到该文件具有适当的权限。(因为你说该文件未锁定)“再看看,你是不是有一个太多的点在那里?还是你只是为了简洁而省略了完整的路径?如果你为这篇文章更改了原始路径,我会要求你粘贴它。