https://www.postgresql.org/docs/current/static/sql-copy.html

一、Copy的基本语法

Copy的作用是复制数据在数据表和文件之间。

Copy在PostgreSql中的语法是(来自文档):

1、  将文件中的数据复制到表中:

COPY table_name [ ( column_name [, ...] ) ]

FROM { 'filename' | PROGRAM 'command' | STDIN }

[ [ WITH ] ( option [, ...] ) ]

2、将表中的数据复制到文件中:

COPY { table_name [ ( column_name [, ...] )] | ( query ) }

TO{ 'filename' | PROGRAM 'command' | STDOUT }

[[ WITH ] ( option [, ...] ) ]

其中option的设置的参数如下:

FORMAT format_name

OIDS [ boolean ]

FREEZE [ boolean ]

DELIMITER 'delimiter_character'

NULL 'null_string'

HEADER [ boolean ]

QUOTE 'quote_character'

ESCAPE 'escape_character'

FORCE_QUOTE { ( column_name [, ...] ) | * }

FORCE_NOT_NULL ( column_name [, ...] )

ENCODING 'encoding_name'

二、Copy的参数解释和示例

FORMAT:指复制到文件的文件类型,如:CSV,TEXT。

OIDS  :指复制到文件时带上oid,但是当某个表没有oid时就会出错。

FREEZE :冻结数据,然后执行VACUUM FREEZE。

DELIMITER:指在导出文件时的分隔符指定需要用单引号。在TEXT时默认为tab,CSV文件默认是逗号。不支持binary文件格式。

HEADER:指在复制到文件时带上表字段名称。

NULL:指定null值,默认为\N。

ENCODING:指定文件的编码,如果没有指定就默认使用客户端的字符集。

STDIN:指的是客户端程序的输入流。

STDOUT:指向是客户端的输出流。

在执行COPY FROM时table_name就需要实际存在的表,其中字段是可以自选的,如:

1.         COPYemp(ename) FROM “E://emp.txt”

需要注意的是字段类型要匹配并且文件也只要一个字段的值。

2.         COPYemp FROM “E://emp.txt”

文件中需要包含emp表中的字段的值,或tab,或‘,’等分割开的数据

在执行COPY TO时的一些注意,解释和示例:

1.         COPYemp TO STDOUT (DELIMITER ‘|’)

指的是输出在客户端并且以‘|’为分隔符

2.         COPY (select* from emp) TO ‘E://emp.csv’ (FORMAT ‘CSV’,DELIMITER ‘|’,HEADER true,NULL ‘’’’’’)

Table_name是可以为动态视图的,并且在后面的括号中参数可以包含多个,多个参数以逗号分隔开。HERDER的值可以使true,false,1,0,on,off,需要注意的是HERDER参数只有在FORMAT为CSV时生效。

3.         COPY empTO PROGRAM ‘zip > E://emp.zip’

参数PROGRAM指的是使用操作系统内部的程序对输出文件进行加工,上面的作用是将emp导出并且压缩。

COPY操作其不仅仅在命令行中可以执行,在IDE的工具中也可以执行如其自带的pgadmin3。

postgresql的copy的更多相关文章

  1. Postgresql VACUUM COPY等

    1.VACUUM VACUUM回收dead tuples占用的存储空间. 在一般的PostgreSQL操作中,被update操作删除或废弃的元组不会从物理表中删除; 它们一直存在,直到执行VACUUM ...

  2. postgresql copy命令介绍

    COPY 命令可以快速的导入数据到postgresql数据库中,文件格式类似TXT.CVS之类.适合批量导入数据,速度比较快.注意COPY只能用于表,不能用于视图. COPY 命令里面的文件必须是由服 ...

  3. postgresql学习笔记--基础篇 - copy

    1. psql 导入/导出数据 psql支持文件数据导入到数据库,也支持数据库表数据导出到文件中. COPY命令和\copy 命令都支持这两类操作,但两者有如下区别: COPY 命令是SQL命令,\c ...

  4. MySQL和PostgreSQL 导入数据对照

    在虚拟机上測评了下MySQL 和 PostgreSQL 的各种LOAD FILE方式以及时间. 由于是虚拟机上的測评,所以时间仅仅做參考,不要太较真, 看看就好了.MySQL 工具:    1. 自带 ...

  5. 使用copy函数完成数据库迁移

    最近在该一个迁移工具的迁移方式,从ora8迁移到postgresql使用原来的插入迁移速度太慢了,老板说让使用缓存迁移,即使用postgresql的copy函数,因此去pg官网查阅了相关资料,我们需要 ...

  6. Postgresql快速写入/读取大量数据(.net)

    环境及测试 使用.net驱动npgsql连接post数据库.配置:win10 x64, i5-4590, 16G DDR3, SSD 850EVO. postgresql 9.6.3,数据库与数据都安 ...

  7. net快速写入/读取大量数据Postgresql

    Postgresql快速写入/读取大量数据 http://www.cnblogs.com/podolski/p/7152144.html 环境及测试 使用.net驱动npgsql连接post数据库.配 ...

  8. Citus 分布式 PostgreSQL 集群 - SQL Reference(摄取、修改数据 DML)

    插入数据 要将数据插入分布式表,您可以使用标准 PostgreSQL INSERT 命令.例如,我们从 Github 存档数据集中随机选择两行. INSERT http://www.postgresq ...

  9. Using Recursive Common table expressions to represent Tree structures

    http://www.postgresonline.com/journal/archives/131-Using-Recursive-Common-table-expressions-to-repre ...

随机推荐

  1. [Shiro] - Shiro之进阶

    上一个知识点ssm, 哪里需要权限,哪里写注解@RequirePermission就行. 但是,真正项目开发的时候, 这种方式就很有局限性了, 当权限配置关系发生变化, 每次都要修改代码, 编译打包重 ...

  2. Spring报NoSuchBeanDefinitionException

    org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 上述可以看出Ac ...

  3. UVa 11491 奖品的价值

    https://vjudge.net/problem/UVA-11491 题意:一个n位整数,删除其中的d个数字,输出最大值. 思路:肯定从高位开始分析,代码如下. #include<strin ...

  4. Java zip解压,并遍历zip中的配置文件 .cfg或.properties

    1.解析cfg或properties配置文件 讲配置文件,读取,并封装成为map类型数据 /** * 解析cfg文件 * * @param cfgFile * @return */ public st ...

  5. MySql 插入数据返回数据的Id值

    insert into addeditemgroup(addeditemgroupname) value(') ; select @@IDENTITY  as id; 返回最新的Id:

  6. CRLF line terminators导致shell脚本报错:command not found --转载

    Linux和Windows文本文件的行结束标志不同.在Linux中,文本文件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行.有时候在Wind ...

  7. bzoj 4403 序列统计 卢卡斯定理

    4403:序列统计 Time Limit: 3 Sec  Memory Limit: 128 MB Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调 ...

  8. python 千位分隔符,

    >>>) >>>'1,234,567,890'

  9. DBCC CHECKIDENT 和SET IDENTITY_INSERT table OFF

    TRUNCATE TABLE [DBO].TRACKING_CODE_BASE_Jasmine DELETE FROM TRACKING_CODE_BASE_Jasmine 有同一张表,一次用trun ...

  10. angular5 ng-content使用方法

    先自定义一个组件import { Component } from '@angular/core'; @Component({ selector: 'exe-greet', template: ` & ...