COPY

Name

COPY -- 在表和文件之间拷贝数据

Synopsis

COPY table_name [ ( column [, ...] ) ]FROM { 'filename' | STDIN }[ [ WITH ] ( option [, ...] ) ]COPY { table_name [ ( column [, ...] ) ] | ( query ) }TO { 'filename' | STDOUT }[ [ WITH ] ( option [, ...] ) ]where option can be one of:FORMAT format_nameOIDS [ boolean ]DELIMITER 'delimiter_character'NULL 'null_string'HEADER [ boolean ]QUOTE 'quote_character'ESCAPE 'escape_character'FORCE_QUOTE { ( column [, ...] ) | * }FORCE_NOT_NULL ( column [, ...] )

描述

COPY在表和文件之间交换数据。COPY TO 把一个表的所有内容都拷贝到一个文件,而COPY FROM从一个文件 里拷贝数据到一个表里(把数据附加到表中已经存在的内容里)。COPY TO 还能拷贝SELECT查询的结果。

如果声明了一个字段列表,COPY将只在文件和表之间拷贝已声明字段的数据。 如果表中有任何不在字段列表里的字段,那么COPY FROM将为那些字段插入缺省值。

带文件名的COPY指示PostgreSQL服务器直接 从文件中读写数据。如果声明了文件名,那么服务器必须可以访问该文件,而且文件名必须从 服务器的角度声明。如果指定了STDINSTDOUT,那么 数据将在客户前端和服务器之间流动。

参数

table_name

现存表的名字(可以有模式修饰)。

column

可选的待拷贝字段列表。如果没有声明字段列表,那么将使用所有字段。

query

一个必须用圆括弧包围的SELECT或VALUES 命令,其结果将被拷贝。

filename

输入或输出文件的绝对路径。Windows用户可能需要使用E''字符串 和双反斜线作为路径名称。

STDIN

声明输入是来自客户端应用。

STDOUT

声明输入前往客户端应用。

boolean

声明选的选项是否应该被开启或者关闭。您可以写 TRUEON, 或者1来启用这个选项,并且用FALSEOFF,或者0 来关闭它。 boolean值也可以被省略,此时 假定为TRUE

FORMAT

选择被读或者写的数据格式: textcsv(逗号分隔值), 或者binary。 默认是text

OIDS

声明为每行拷贝内部对象标识(OID)。如果为一个 query拷贝或者没有OID的 表声明了OIDS选项,则抛出一个错误。

DELIMITER

指定分隔每一行(排)中的列的字符。默认是文本格式的制表符,CSV格式的逗号。 必须有一个独立的一字节的字符。 在使用binary格式时这个选项是不允许的。

NULL

This option is not allowed when using binary format. 声明代表一个空值的字符串。默认是文本格式的\N (backslash-N), CSV格式的一个未被引用的空字符串。即使是文本格式您可能也更偏向于空串, 例如您不想从空字符串中区分空值。

Note: 在使用COPY FROM的时候,任何匹配这个字符串的字符串将 被存储为NULL值,所以你应该确保你用的字符串和COPY TO相同。

HEADER

声明文件包含一个带有文件中每列名称的标题行。在输出时,第一行包含表中的列名, 在输入时,第一行是被忽略的。该选项仅仅在使用CSV格式时是允许的。

QUOTE

在数值被引用后指定要使用的引用字符。默认的是双引号。这一定是一个1字节的字符。 该选项仅仅在使用CSV格式时允许。

ESCAPE

声明应该出现在一个匹配QUOTE值的数据字符之前的字符。 默认与QUOTE值相同(所以若它出现在数据中,则引用字符是翻一倍)。 这一定是一个1字节的字符。该选项只有在使用CSV格式时允许。

FORCE_QUOTE

强制引用在每个指定列的所有非值。输出从不被引用。 如果声明了*,非值将在所有列中被引用。这个选项仅仅在 COPY TO中并且仅仅在使用CSV格式时允许。

FORCE_NOT_NULL

默认情况下空字符串是空的,这意味着空值将会被读作长度为零的字符串而不是空值, 即使当他们不被引用。这个选项仅仅在COPY FROM中并且仅仅在使用 CSV 格式时允许。

输出

成功完成时,COPY按照如下格式返回一个命令标签:

COPY count

其中的count是拷贝的行数。

注意

COPY只能用于表,不能用于视图。当然也可以用于 COPY (SELECT * FROMviewname) TO ...。

COPY仅仅处理命名了的特定表;它将不复制数据到子表或从子表 中复制数据。因此比如COPYtable TO 显示与SELECT * FROM ONLYtable 相同的数据。但是COPY (SELECT * FROMtable) TO ... 可以用于转储在继承层次结构的所有数据。

你对任何要COPY TO出来的数据必须有选取数据的权限, 对任何要COPY FROM入数据的表必须有插入权限。 对列在命令中的列拥有列权限是足够的。

COPY命令里面的文件必须是由服务器直接读或写的文件, 而不是由客户端应用读写。因此,它们必须位于数据库服务器上或者可以被数据库 服务器所访问,这些事情不应该由客户端来做。它们必须被运行 PostgreSQL服务器的用户可读或写, 而不是客户端。只允许数据库超级用户COPY一个文件, 因为它允许读写任意服务器有权限访问的文件。

不要混淆COPY和psql的 \copy指令。\copy调用 COPY FROM STDINCOPY TO STDOUT,然后把数据抓取/存储到一个psql 客户端可以访问的文件中。因此,使用\copy的时候,文件访问 权限是由客户端而不是服务器端决定的。

建议在COPY里的文件名字总是使用绝对路径。 在COPY TO的时候是由服务器强制进行的,但是对于 COPY FROM,你的确可从一个相对路径的文件里读取。 该路径将解释为相对于服务器的工作目录(通常是数据目录),而不是客户 端的工作目录。

COPY FROM会激活所有触发器和检查约束。不过,不会激活规则。

COPY输入和输出被DateStyle影响。 为了和其它PostgreSQL安装移植(它们可能是非缺省 DateStyle设置),应该在使用COPY TO前把 DateStyle设置为ISO。 通过将IntervalStyle设置为sql_standard来避免转储数据 也是一个好主意。因为负的区间值可能会被对IntervalStyle有不同设置的 服务器误解。

Input data is interpreted according to the current client encoding, and output data is encoded in the current client encoding, even if the data does not pass through the client but is read from or written to a file directly by the server. 输入数据通过当前客户机编码来解译,输出数据被编码为当前客户机编码, 即使数据不经过客户端的,仍会通过服务器直接将数据从文件中读出或者写入到文件中去。

COPY在第一个错误处停下来。这些在COPY TO 中不应该导致问题,但在COPY FROM时目标表会已经接收到早先的行, 这些行将不可见或不可访问,但是仍然会占据磁盘空间。如果你碰巧拷贝大块数据文件的话, 这些东西积累起来可能会占据相当大的磁盘空间。你可以调用VACUUM 来恢复那些磁盘空间。

转载:

PostgreSQL 9.0.4 中文文档

PostgreSQL COPY命令相关推荐

  1. PostgreSQL copy 命令教程

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

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

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

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

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

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

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

  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. Postgres copy命令导入导出数据

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

  9. 使用GreenPlum/postgres的copy命令导出/导入数据

    1. COPY命令 1.1 postgres postgres的COPY命令可以快速的导出/导入数据到postgresql数据库中,支持常用的文件格式,如:txt.sql.csv.压缩文件.二进制格式 ...

最新文章

  1. java资料——线性表(转)
  2. POJ1083 Moving Tables
  3. SHE PWM的simulink仿真谐波分析
  4. 一、认识Python
  5. FaceWarehouse: a 3D Facial Expression Database for Visual Computing
  6. python的get和post方式请求详解
  7. 【net】音乐播放器
  8. Android WAP NET 区别
  9. Oracle 11g企业版下载
  10. wps怎么删除空白页?你学会了吗?
  11. Eclipse常用功能
  12. Asp.net web服务处理程序(第六篇)
  13. Linux查看目录busy,Linux中遇到device is busy的处理方法
  14. python建立ARIMA模型进行时间序列分析(氵论文)
  15. ios微信公众号或浏览器滚动露底漏网址闪动无法固定
  16. 「津津乐道播客」#380 津津有味:厨房重地举目皆是刚需,将就不得
  17. linux 字体显示更清晰,Fedora下使中文字体显示变得更清晰
  18. Win 11 添加并使用 DOH
  19. 腾讯逆地址解析php,腾讯地图逆地址解析,通过经纬度获取详细的信息数据
  20. 华为FreeBuds SE耳机突然没有声音了是怎么回事?

热门文章

  1. 市场监管总局对《严重违法失信名单管理办法》征求意见
  2. JAVA运营商项目怎么样,运营商套餐的那些坑
  3. 自动化测试用例设计(四)自动化测试用例设计实例
  4. Kylin 在一点资讯的实践
  5. Hadoop学习笔记(系统的学习)
  6. android学习链接
  7. 图标设计-CSDN就业班-专题视频课程
  8. Linux SCSI LOG打印等级
  9. 计算机毕业设计Node.js+Vue基于JAVA语言的国货美妆店管理系统(程序+源码+LW+部署)
  10. 2007 经典数码相机