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

从远程客户端批量加载到PostgreSQL

  •  1
  • Jon  · 技术社区  · 14 年前

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

    PostgreSQL有等价的方法吗?如果不是,如果我不能先将文件复制到服务器上,建议使用什么方法从客户机加载大型文件?

    谢谢。

    4 回复  |  直到 8 年前
        1
  •  3
  •   Pablo Santa Cruz    14 年前

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

    你唯一需要使用的东西 拷贝 从远程客户端 利伯克 启用的客户端,如 psql 命令行实用程序。

    从远程客户端运行:

    $ psql -d dbname -h 192.168.1.1 -U uname < yourbigscript.sql
    
        2
  •  2
  •   mamdouh alramadan Kurt Ehrler    12 年前

    你可以使用 \copy 来自psql工具的命令如下:

    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
  •  1
  •   Matthew Wood    14 年前

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

        4
  •  0
  •   ivan_pozdeev RenanSS    8 年前

    使用 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