18 postgresql ubuntu
我使用以下命令:
copy (select so.name,
so.date_order,
sol.name,
sol.product_Id,
sol.product_uom_qty ,
ai.number,
ai.date_invoice ,
so.amount_total ,
so.amount_tax
from sale_order so ,
sale_order_line sol ,
account_invoice ai
where so.id = sol.order_id
and so.name = ai.origin
and ai.state='open')
to '/home/ekodev/Documents/test1.csv' delimiter ',' csv header;
Run Code Online (Sandbox Code Playgroud)
但是,它会出现以下错误:
********** Error **********
ERROR: must be superuser to COPY to or from a file
SQL state: 42501
Hint: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.
Run Code Online (Sandbox Code Playgroud)
即使我改变了许可 ekodev@partner:~/Documents$ sudo chmod a+rwX /home/ekodev/ /home/ekodev/Documents/ /home/ekodev/Documents/test1.csv
它仍然不适合我.
有谁知道问题是什么?
frl*_*lan 16
没有文件:
COPY命名文件只允许用于数据库超级用户,因为它允许读取或写入服务器有权访问的任何文件.
这意味着,您的数据库用户需要拥有超级用户标志.你可以设置标志
ALTER ROLE <rolename> WITH SUPERUSER
Run Code Online (Sandbox Code Playgroud)
因为这可能是安静的危险你是否考虑使用\ copy来自psql而不是从客户端复制数据.
Ati*_*ska 12
这个解决方案对我有用\copy。ALTER不需要,因为它还需要管理员权限。
psql -h <host> -U <user> -d <dbname> -c "\copy <table_name> FROM '<path to csvfile/file.csv>' with (format csv,header true, delimiter ',');"
Run Code Online (Sandbox Code Playgroud)
这对我的案例有用
sudo psql -h localhost -U root -d my_db -p 5432 -c "\COPY source_table TO '/home/user/source_table.csv' DELIMITER ',' CSV HEADER;"
Run Code Online (Sandbox Code Playgroud)
sudo -u postgres psql
Run Code Online (Sandbox Code Playgroud)
chmod o+rw /tmp/amit.csv
Run Code Online (Sandbox Code Playgroud)
\COPY table TO '/tmp/amit.csv' DELIMITER ',' CSV HEADER;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36251 次 |
| 最近记录: |