Postgresql 函数在没有超级用户的情况下加载 csv

h3l*_*ca7 3 csv postgresql import superuser

有没有办法通过 COPY WITHOUT SUPERUSER权限将 csv 加载到 postgresql 表中?

小智 6

我设法让它像这样工作:

cat myfile.csv | psql -d mydb -c "COPY landing_tbl(field01, field02...) FROM STDIN CSV;"
Run Code Online (Sandbox Code Playgroud)


Lau*_*lbe 5

您可以使用

COPY tabname FROM 'filename'
Run Code Online (Sandbox Code Playgroud)

这需要超级用户权限或

COPY tabname FROM STDIN
Run Code Online (Sandbox Code Playgroud)

这不需要超级用户权限。

出于安全原因,PostgreSQL 需要超级用户权限才能访问数据库服务器上的文件。

一种解决方法是编写一个SECURITY DEFINER由超级用户拥有的数据库函数,COPY为您执行此操作。然后每个拥有EXECUTE该功能权限的人(默认情况下每个人,因此更改它)都可以执行操作。