【发布时间】:2019-04-03 19:19:39
【问题描述】:
我正在尝试使用 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' 带分隔符',')
也试过这种方式:
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' 带分隔符',')
如果我使用 psql 行命令执行返回上述错误的命令,则可以正常工作
\copy requisicoes FROM '/srv/www/bilhetagem_logs/bilhetagem_log1_2018-10-29' WITH DELIMITER ','
有人可以帮助我吗? :)
我必须使用 \copy insted of copy 因为我在数据库中没有超级用户权限。 https://www.postgresql.org/docs/9.2/static/sql-copy.html
COPY 命名文件只允许数据库超级用户使用,因为它允许读取或写入服务器有权访问的任何文件。
【问题讨论】:
-
\copy是psql命令,而不是常规 SQL 命令。唯一可以使用它的环境是psql
标签: database postgresql laravel-5