代码之家  ›  专栏  ›  技术社区  ›  Bhargavi

在Talend中使用Postgres“copy”命令将表格内容加载到CSV文件中

  •  1
  • Bhargavi  · 技术社区  · 7 年前

    我必须将一些postgres表内容复制到CSV文件中,以便使用Talend进行进一步处理。

    当我试着

    copy table_name to ‘/tmp/export/table_name.csv’ with CSV;
    

    使用“tpostgresqlRow”组件时,它抛出了一个错误,即“需要超级用户访问”,这是我无法获得的。

    作为替代,我尝试使用“\ copy”命令作为

    \\copy table_name to ‘/tmp/export/table_name.csv’ with CSV;"
    

    (第一个斜杠用于转义另一个)。它仍然抛出错误,说“语法错误在'\'。

    我也尝试了tpostgresqlBulkExec组件,该组件在内部使用“copy”命令,它也抛出了错误,说“需要超级用户访问”。

    有没有办法使用Talend批量执行postgres的“copy”命令?

    任何帮助都将不胜感激。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Jon Scott    7 年前

    copy命令需要访问postgres表和本地文件系统。

    我认为你的问题是因为你没有访问本地文件夹的权限。你需要整理一下,或者试试你知道有权访问的另一个文件夹。

    对于同一个用户,如果您尝试linux命令

    touch /tmp/export/test.csv 
    

    您可能会看到一个错误。

    \copy命令将失败,因为要使用该命令,首先需要使用名为psql的工具。

        2
  •  0
  •   Bhargavi    7 年前

    我从Talend支持团队得到确认,tPostgresqlRow组件将不支持“COPY”命令。我通过安装PSQL客户端并在Talend中使用tSSH组件调用它来执行所需的“COPY”命令,解决了我的问题。