Laravel 5.5-带有\ copy命令的DB ::语句错误(POSTGRES)

时间:2018-10-30 17:12:54

标签: database postgresql laravel-5

我正在尝试使用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命名文件,因为它允许读取或写入服务器有权访问的任何文件。

1 个答案:

答案 0 :(得分:0)

请参见PostgreSQL上的this article并注意以下行:

  

请勿将COPY与psql指令\ copy混淆。 \ copy调用   从STDIN复制或复制到标准输出,然后在其中获取/存储数据   psql客户端可访问的文件。因此,文件可访问性和   \ copy时,访问权限取决于客户端而不是服务器   使用。

\copy是psql指令,因此您无需编写\copy,只需编写COPY