【问题标题】:Postgresql function load csv WITHOUT SUPERUSERPostgresql 函数在没有超级用户的情况下加载 csv
【发布时间】:2018-04-12 09:01:31
【问题描述】:

是否存在通过 COPY WITHOUT SUPERUSER 权限将 csv 加载到 postgresql 表中的方法?

【问题讨论】:

  • \copy 是我所知道的 psql 命令
  • 但我需要从函数中复制

标签: postgresql csv import superuser


【解决方案1】:

我设法让它像这样工作:

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

【讨论】:

    【解决方案2】:

    你可以使用

    COPY tabname FROM 'filename'
    

    需要超级用户权限或

    COPY tabname FROM STDIN
    

    不需要超级用户权限。

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

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

    【讨论】:

    • 是的,我知道。但是如何从 csv 加载(通过 STDIN)?
    • 只有当文件在客户端时,您才能这样做。有关详细信息,我需要知道您使用什么客户端或 API 来访问 PostgreSQL。
    • 我使用 RazorSQL 连接远程数据库
    • 使用import tool 应该可以解决问题。
    • 也就是说没有超级用户权限就无法在函数中导入csv数据?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2013-04-02
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多