报文介绍PostgreSQL copy 命令,通过示例展示把查询结果导出到csv文件,导入数据文件至postgresql。

1. copy命令介绍

copy命令用于在postgreSql表和标准文件系统直接传输数据。copy命令让PostgreSQL 服务器直接读写文件,因此文件必须让PostgreSQL 用户能够访问到。该命令使用的文件是数据库服务器直接读写的文件,不是客户端应用的文件,因此必须位于服务器本地或被直接访问的文件,而不是客户端位置。

copy to 命令拷贝表内容至文件,也可以拷贝select的查询结果;也就说,如果select后面列出部分字段,则copy to 命令仅拷贝指定字段的结果至文件。准备使用copy to 命令的表必须授予select权限。该命令仅能在表上使用,不能用于视图;当我们需要拷贝视图内容时,可以给copy命令传入sql查询:

COPY (SELECT * FROM country) TO ‘list_countries.copy’;

copy from拷贝文件的数据到数据表。当使用copy from,文件中的每个字段被i顺序插入特定字段。如果该命令中的表的列参数未指定则获取它们的缺省值。使用copy from命令的表必须授予insert权限。

不要混淆copy命令和psql中的 \copy\copy调用 COPY FROM STDIN 或 COPY TO STDOUT,然后返回数据或存储可以被psql客户端访问的文件数据。因此,当使用\copy时,文件的可访问性和访问权限取决于客户端,而不是服务器。

2. copy命令示例

2.1 从Postgresql导出表

我们能拷贝表至控制台,并使用竖线(|)作为字段直接的分隔符:

copy customers to stdout(delimiter '|')

拷贝表至文件,使用空格作为字段直接的分隔符:


COPY customers TO '/database/data/test_data.copy' (DELIMITER ' ');

2.2 导入文件至Postgresql表

传入文件至已经存在的表:


COPY customers FROM '/database/data/test_data.copy' (DELIMITER ' ');

2.3 导出查询结果至文件

导出查询结果至文件:

COPY (SELECT * FROM customers WHERE name LIKE 'A%') TO '/data/test_data.copy';

如果需要压缩数据,使用下面命令:

COPY customers TO PROGRAM 'gzip > /data/test_data.copy.gz';

如果仅导出2列,使用下面命令:

COPY customers(col, col2) TO '/data/test_data.copy' DELIMITER ' ';

如果需要导出二进制文件:

copy customers to 'e:/data.dat' with binary;

导出csv文件:

copy customers to 'e:/data.csv' with csv;

csv文件还有一些其他参数:

DELIMITER – 数据行中分割每个字段的分隔符。csv文件一般使用逗号.

HEADER – 指定csv文件的标题,如果不需要标题行,可以忽略HEADER.

COPY  country FROM  '/data/test_data.copy' WITH delimiter ','  CSV HEADER;

指定编码:

COPY country  FROM  '/data/test_data.copy' WITH delimiter ','  CSV HEADER encoding 'utf-8';

3. 总结

本文介绍PostgreSQL中的copy命令,并通过示例展示了不同的应用场景。使用COPY加载大量行总是比使用INSERT快,COPY会进行一次设置,并且每行的开销都非常低,尤其是在不涉及触发器的情况下。

PostgreSQL copy 命令教程相关推荐

  1. copy语法 postgre_PostgreSQL copy 命令教程详解

    报文介绍PostgreSQL copy 命令,通过示例展示把查询结果导出到csv文件,导入数据文件至postgresql. 1. copy命令介绍 copy命令用于在postgreSql表和标准文件系 ...

  2. POSTGRESQL COPY 命令导入数据,你还另一个更快的方案!

    POSTGRESQL 数据库数据导入的核心一般都使用COPY 命令,熟悉POSTGRESQL 的同学应该对这个命令不陌生,相对于MYSQL 去一条条的执行insert命令来说,COPY 命令是POST ...

  3. PostgreSQL COPY命令

    COPY Name COPY -- 在表和文件之间拷贝数据 Synopsis COPY table_name [ ( column [, ...] ) ]FROM { 'filename' | STD ...

  4. PostgreSQL \copy命令实现数据导出到文件

    由于linux系统的文件访问权限控制,我们是使用postgres用户进行相关的操作的,因此,执行导出文件之前,先确定导出文件的文件访问权限是postgres,如果不是,那么会报Permission d ...

  5. postgresql导入导出大文件 copy命令

    在数据体量较大的情况下,可以使用copy命令将数据导入或导出postgresql数据库. 导入postgresql 导入数据库是用 copy from,具体命令如下: copy tablename f ...

  6. PostgreSQL 之 copy 命令基础

    作者:瀚高PG实验室 (Highgo PG Lab)-波罗 COPY命令概述 copy 命令用于表与文件(和标准输出,标准输入)之间的相互拷贝: copy to由表至文件,copy from由文件至表 ...

  7. PostgreSQL COPY 导入/导出数据

    COPY 命令可以快速的导入数据到 PostgreSQL 中,文件格式类似CVS之类.适合批量导入数据,比 \i 和恢复数据表快. 导出表数据到文件或 STDOUT : COPY tablename ...

  8. Windows上PostgreSQL安装配置教程

    这篇文章主要为大家详细介绍了Windows上PostgreSQL安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PostgreSQL的扩展PostGIS是最著名的开源GIS数据库.  ...

  9. Postgres copy命令导入导出数据

    前言 最近有需要对数据进行迁移的需求,由于postgres性能的关系,单表3000W的数据量查询起来有一些慢,需要对大表进行切割,拆成若干个子表,涉及到原有数据要迁移到子表的需求.起初的想法是使用存储 ...

最新文章

  1. 使用Python和OpenCV进行文本偏斜校正
  2. Reddit欲融资3亿美元,由腾讯领投
  3. c++ 终止 超时_C++ 哪里超时了啊?
  4. RH033 Unit 9 vim: An Advanced Text Editor
  5. Linux C编程--网络编程3--面向无连接的网络编程
  6. 分析chrome中的network面板
  7. oracle 授权 传递,Oracle基础学习4--Oracle权限传递
  8. 功能测试——房屋租赁系统(Selenium IDE)
  9. 使用 Jquery 来实现可以输入值的下拉选单 雏型
  10. 一次性尿袋行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  11. 台达伺服ASD-B2的调试
  12. 秦时明月更新了?青春回来了
  13. python聚类分析超市_Biopython聚类分析
  14. 二手苹果手机价格查询
  15. voyage java_Voyage:采用Java实现的基于netty轻量的高性能分布式RPC服务框架
  16. shell脚本——sed详细介绍(包含应用案例)
  17. 构建优秀产品信息架构的三要素
  18. vue this.$refs 打印出来是空的原因
  19. 11选5c语言代码,和山山哥一起学EXCEL和VBA,学以致用搞彩票11选5(一)
  20. FPGA hold违例

热门文章

  1. 157、在系统中查找重复文件
  2. Android 实现上拉背景模糊,Android开发者珍藏必备【开源项目篇】
  3. ArcGisEngineForJava开发
  4. Google Maps API 简易教程(一)
  5. 使用selenium爬取天猫商品
  6. XMind思维导图软件和常用快捷键
  7. js 对象数组互相转换
  8. sqlserver如何设置周一作为起始周次
  9. 物联网开源数据库分析归纳
  10. 泰凌微8258入门指导2-串口打印