【问题标题】:Bulk loading into PostgreSQL from a remote client从远程客户端批量加载到 PostgreSQL
【发布时间】:2016-09-08 02:46:01
【问题描述】:

我需要将一个大文件批量加载到 PostgreSQL 中。我通常会使用 COPY 命令,但是这个文件需要从远程客户端机器上加载。使用 MSSQL,我可以安装本地工具并在客户端使用 bcp.exe 连接到服务器。

PostgreSQL 有没有等效的方法?如果不是,如果我不能先将文件复制到服务器,那么从客户端机器加载大文件的推荐方法是什么?

谢谢。

【问题讨论】:

    标签: postgresql bulk-load


    【解决方案1】:

    PostgreSQL Protocol v3.0(Postgresql 7.4 或更高版本)支持COPY 命令。

    您唯一需要从远程客户端使用COPY 是启用libpq 的客户端,例如psql 命令行实用程序。

    从远程客户端运行:

    $ psql -d dbname -h 192.168.1.1 -U uname < yourbigscript.sql
    

    【讨论】:

      【解决方案2】:

      您可以使用 psql 工具中的\copy 命令,例如:

      psql -h IP_REMOTE_POSTGRESQL -d DATABASE -U USER_WITH_RIGHTS -c "\copy 
        TABLE(FIELD_LIST_SEPARATE_BY_COMMA) from 'FILE_IN_CLIENT_MACHINE(MAYBE IN THE SAME 
      DIRECTORY)' with csv header"
      

      【讨论】:

        【解决方案3】:

        假设您有某种客户端来运行查询,您可以使用 COPY 命令的 COPY FROM STDIN 形式:http://www.postgresql.org/docs/current/static/sql-copy.html

        【讨论】:

          【解决方案4】:

          使用psql\copy命令在sql中加载数据:

          $ psql -h <IP> -p <port> -U <username> -d <database>
          
          database# \copy schema.tablename from '/home/localdir/bulkdir/file.txt' delimiter as '|' 
          
          database# \copy schema.tablename from '/home/localdir/bulkdir/file.txt' with csv header
          

          【讨论】:

            猜你喜欢
            • 2020-10-10
            • 1970-01-01
            • 2020-07-17
            • 2017-09-30
            • 1970-01-01
            • 2011-01-29
            • 1970-01-01
            • 1970-01-01
            • 2018-08-19
            相关资源
            最近更新 更多