copy 可以在表和文件之间交换数据
COPY table_name [ ( column_name [, ...] ) ]FROM { 'filename' | PROGRAM 'command' | STDIN }[ [ WITH ] ( option [, ...] ) ]COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }TO { 'filename' | PROGRAM 'command' | STDOUT }[ [ WITH ] ( option [, ...] ) ]where option can be one of:FORMAT format_nameOIDS [ 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在pg的表和文件之间进行数据的交换。copy to把一个表的所有内容拷贝到一个文件,而copy from是从一个文件拷贝到一个表(表已存在)里。
下面是各个参数的说明
table_name
现存表的名字(可以有模式修饰)。。
column_name
可选的待拷贝字段列表。如果没有声明字段列表,那么将使用所有字段。
query
一个必须用圆括弧包围的SELECT或VALUES命令,其结果将被拷贝。
filename
输入或输出文件的路径名。输入文件名可以是绝对或是相对的路径,但输出文件名必须是绝对路径。 Windows用户可能需要使用E''字符串和双反斜线作为路径名称。
PROGRAM
需执行的程序名。在COPY FROM命令中,输入是从程序的标准输出中读取,而在COPY TO中,命令的输出会作为程序的标准输入。
注意,程序一般是在命令行界面下执行,当用户需要传递一些变量给程序时,如果这些变量的来源不是可靠的,用户必须小心过滤处理那些对命令行界面来说是有特殊意义的字符。 基于安全的原因,最好是使用固定的命令字符串,或者至少是应避免直接使用用户输入(应先过滤特殊字符)。
STDIN
声明输入是来自客户端应用。
STDOUT
声明输入将写入客户端应用。
boolean
声明用户所选的选项是否应该被开启或者关闭。您可以写TRUE、 ON或1来启用这个选项,并且用FALSE、OFF或0来关闭它。 boolean值也可以被省略,此时系统使用缺省值TRUE。
FORMAT
选择被读或者写的数据格式:text、csv(逗号分隔值),或者binary。 默认是text。
OIDS
声明为每行记录都拷贝内部对象标识(OID)。 (如果为一个query拷贝或者没有OIDS的表声明了OIDS选项,则抛出一个错误。)
FREEZE
请求拷贝那些已冻结的数据,就类似使用VACUUM FREEZE的效果。 这主要于用于初始化时加载数据时的性能考虑。 仅在表记录初始创建或是在当前子事务中被清理的记录会补冻结,没有游标会打开,事务中也没有数据快照。
注意此时其他的事务会立刻看见刚加载的数据。 这不符合MVCC正常的可见性规则,用户应注意这可能带来的潜在问题。
DELIMITER
指定分隔每一行记录中的列的字符。默认是文本格式的制表符,CSV格式的逗号。 必须有一个独立的一字节的字符。 在使用binary格式时这个选项是不允许的。
NULL
声明代表一个空值的字符串。默认是文本格式的\N,CSV格式的一个未被引用的空字符串。 即使是文本格式您可能也更偏向于空串,例如您不想从空字符串中区分空值。 在使用binary格式时这个选项是不允许的。
注意: 在使用COPY FROM的时候,任何匹配这个字符串的字符串将被存储为NULL值,所以你应该确保你用的字符串和COPY TO相同。
HEADER
声明文件包含一个带有文件中每列名称的标题行。 在输出时,第一行包含表中的列名,在输入时,第一行是被忽略的。该选项仅仅在使用CSV格式时是允许的。
QUOTE
指定引用数据的引用字符。默认的是双引号。这一定是一个1字节的字符。该选项仅仅在使用CSV格式时允许。
ESCAPE
声明应该出现在一个匹配QUOTE值的数据字符之前的字符。 默认与QUOTE值相同(所以若它出现在数据中,则引用字符是翻一倍)。 这一定是一个1字节的字符。该选项只有在使用CSV格式时允许。
FORCE_QUOTE
强制引用在每个指定列的所有非NULL值。NULL从不被引用。 如果声明了*,非NULL值将在所有列中被引用。 这个选项仅仅在COPY TO中并且仅仅在使用CSV格式时允许。
FORCE_NOT_NULL
默认情况下空字符串是空的,这意味着空值将会被读作长度为零的字符串而不是空值,即使当他们不被引用。 这个选项仅仅在COPY FROM中并且仅仅在使用CSV格式时允许。
ENCODING
声明文件的编码集是encoding_name。 如果这个选项省略,则系统使用当前的用户编码集。
COPY sb_payment_detail(GUID,RYID,DWID,JFGZ,GRJFJS,DWJFJS,GRJFE,DWJFE,JFRQ,JBR,JBSJ) FROM STDIN DELIMITER AS '' CSV QUOTE AS '' encoding 'UTF8'
2dbfb288-10f8-4633-aade-e7f04745a8e9100826561008265630764332239432212020-03-12T03:46:12.493+08:00的罚款加凉开水年开发打了卡季度付2020-03-31T09:21:54.927+08:00
用逗号作为分隔符;用双引号作为引用字符