我正在尝试使用laravel 5.5从POSTGRES使用\ copy命令在数据库中插入一个大文件,但是却收到此错误消息。
我尝试过这种方式:
DB::statement( DB::raw("\\copy requisicoes FROM '".$file1."' WITH DELIMITER ','"));
出现此错误:
SQLSTATE [42601]:语法错误:7错误:“ \”或附近的语法错误LINE 1:\ copy requisicoes FROM'/ srv / www / bilhetagem_logs / bilhetagem _... ^(SQL:\ copy requisicoes FROM' / srv / www / bilhetagem_logs / bilhetagem_log1_2018-10-29'WITH DELIMITER',')
也尝试过这种方式:
DB::statement( DB::raw('\copy requisicoes FROM \''.$file1.'\' WITH DELIMITER \',\''));
出现此错误:
SQLSTATE [42601]:语法错误:7错误:“ \”或附近的语法错误LINE 1:\ copy requisicoes FROM'/ srv / www / bilhetagem_logs / bilhetagem _... ^(SQL:\ copy requisicoes FROM' / srv / www / bilhetagem_logs / bilhetagem_log1_2018-10-29'WITH DELIMITER',')
如果我使用psql line命令执行返回上述错误的命令,则工作正常
\copy requisicoes FROM '/srv/www/bilhetagem_logs/bilhetagem_log1_2018-10-29' WITH DELIMITER ','
有人可以帮我吗? :)
我必须使用\ copy insted的副本,因为我没有DB的超级用户特权。 https://www.postgresql.org/docs/9.2/static/sql-copy.html
仅允许数据库超级用户使用COPY命名文件,因为它允许读取或写入服务器有权访问的任何文件。
答案 0 :(得分:0)
请参见PostgreSQL上的this article并注意以下行:
请勿将COPY与psql指令\ copy混淆。 \ copy调用 从STDIN复制或复制到标准输出,然后在其中获取/存储数据 psql客户端可访问的文件。因此,文件可访问性和 \ copy时,访问权限取决于客户端而不是服务器 使用。
\copy
是psql指令,因此您无需编写\copy
,只需编写COPY
。