【问题标题】:PostgreSQL export result as CSV from remote serverPostgreSQL 从远程服务器导出结果为 CSV
【发布时间】:2015-03-03 20:02:13
【问题描述】:

我已经阅读了所有其他解决方案,但没有一个适合我的需求,我不使用 Java,我没有超级用户权限,我的服务器中没有安装 API。

我在远程 PostgreSQL 服务器上拥有选择权限,我想在其中远程运行查询并将其结果导出到本地服务器中的 .csv 文件中。

一旦我设法建立到服务器的连接,我首先必须定义数据库,然后是模式,然后是表,这使得以下代码行不起作用:

\copy schema.products TO '/home/localfolder/products.csv' CSV DELIMITER ','

copy (Select * From schema.products) To '/home/localfolder/products.csv' With CSV;

我也尝试过以下 bash 命令:

 psql -d DB -c "select * from schema.products;" > /home/localfolder/products.csv

并使用以下结果记录它:

-bash: home/localfolder/products.csv: 没有这样的文件或目录

如果有人能对此有所了解,我将不胜感激。

【问题讨论】:

    标签: bash postgresql csv remote-server


    【解决方案1】:

    你试过吗?我现在没有 psql 来测试它。

    echo “COPY (SELECT * from schema.products) TO STDOUT with CSV HEADER” | psql -o '/home/localfolder/products.csv'
    

    详情:

    -o filename   Put  all  output into file filename.  The path must be writable by the client.
    echo builtin + piping (|) pass command to psql
    

    【讨论】:

      【解决方案2】:

      一段时间后,一位好同事设计了这个解决方案,它非常适合我的需求,希望这可以帮助某人。

      'ssh -l user [remote host] -p [port] \'psql -c "copy (select * from schema.table_name') to STDOUT csv header" -d DB\' > /home/localfolder/products.csv'
      

      与 idobr 的回答非常相似。

      【讨论】:

        【解决方案3】:

        来自http://www.postgresql.org/docs/current/static/sql-copy.html

        在 COPY 命令中命名的文件由服务器直接读取或写入,而不是由客户端应用程序。

        因此,您将始终希望使用psql\copy 元命令。

        以下应该可以解决问题:

        \copy (SELECT * FROM schema.products) to 'products.csv' with csv
        

        如果上述方法不起作用,我们需要使用错误/警告消息。

        【讨论】:

          【解决方案4】:

          您提到服务器是远程的,但是您正在连接到本地主机。添加 -h [server here] 或设置 ENV 变量

          export PGHOST='[server here]' 
          

          数据库名称应该是最后一个参数,而不是-d。 最后那个命令应该没有失败,我猜那个目录不存在。要么创建它,要么尝试写入 tmp。

          请您尝试以下命令:

          psql -h [server here] -c "copy (select * from schema.products) to STDOUT csv header" DB > /tmp/products.csv
          

          【讨论】:

            猜你喜欢
            • 2012-05-04
            • 2018-10-04
            • 1970-01-01
            • 2015-07-19
            • 2021-12-10
            • 1970-01-01
            • 2011-12-28
            • 2016-12-09
            相关资源
            最近更新 更多