如何将postgresql数据库表内数据导出为excel格式

作者:瀚高PG实验室 (Highgo PG Lab)- 禹晓

本文主要用于介绍如何使用copy或者\copy命令将postgresql数据库内表的数据导出为excel格式,方便用户查看编辑。

copy命令同\copy命令语法上相同,区别在于copy必须使用能够超级用户使用,copy … to file 中的文件都是数据库服务器所在的服务器上的文件,而\copy 一般用户即可执行且\copy 保存或者读取的文件是在客户端所在的服务器。本文主要以copy命令作为介绍重点,使用copy命令将表内数据倒为csv格式文件即为excel格式。
1、copy命令语法

COPY?{?表名?[?(?列名称?[,?...]?)?]?|?(?查询?)?}????TO?{?‘文件名‘?|?PROGRAM?‘命令‘?|?STDOUT?}???
?[?[?WITH?]?(?选项?[,?...]?)?]选项可以是下列内容之一
?FORMAT?格式_名称????
?FREEZE?[?布尔?]????
?DELIMITER?‘分隔字符‘????
?NULL?‘空字符串‘????
?HEADER?[?布尔?]????
?QUOTE?‘引用字符‘????
?ESCAPE?‘转义字符‘????
?FORCE_QUOTE?{?(?列名称?[,?...]?)?|?*?}????
?FORCE_NOT_NULL?(?列名称?[,?...]?)????
?FORCE_NULL?(?列名称?[,?...]?)????
?ENCODING?‘encoding_name(编码名)‘

2、多场景使用介绍
①查看现有表数据

test=#?select?*?from?test;user_id?|???user_name???|?age?|?gender?|????????????????????remark????????????????????
---------+---------------+-----+--------+----------------------------------------------???????1?|?Jackie?Chan???|??45?|?male???|?"police?story","project?A","rush?hour"
???????3?|?Brigitte?Li???|??46?|?female?|?
???????4?|?Maggie?Cheung?|??39?|?female?|?
???????5?|?Jet?Li????????|??41?|?male???|?"Fist?of?Legend","Once?Upon?a?Time?in?China"
???????2?|?Gong?Li???????|??38?|?female?|?"Farewell?My?Concubine","Lifetimes?Living"(5?行记录)

②带列名导出,默认情况下使用,作为分隔符

test=#?copy?test?to?‘/tmp/test1.csv‘?with?csv?header;COPY?5test=#?\!?cat?/tmp/test1.csvuser_id,user_name,age,gender,remark1,Jackie?Chan,45,male,"""police?story"",""project?A"",""rush?hour"""3,Brigitte?Li,46,female,4,Maggie?Cheung,39,female,5,Jet?Li,41,male,"""Fist?of?Legend"",""Once?Upon?a?Time?in?China"""2,Gong?Li,38,female,"""Farewell?My?Concubine"",""Lifetimes?Living"

③带列名导出,指定使用|作为分隔符

test=#?copy?test?to?‘/tmp/test1.csv‘?with?csv?header?DELIMITER?‘|‘;COPY?5test=#?\!?cat?/tmp/test1.csvuser_id|user_name|age|gender|remark1|Jackie?Chan|45|male|"""police?story"",""project?A"",""rush?hour"""3|Brigitte?Li|46|female|4|Maggie?Cheung|39|female|5|Jet?Li|41|male|"""Fist?of?Legend"",""Once?Upon?a?Time?in?China"""2|Gong?Li|38|female|"""Farewell?My?Concubine"",""Lifetimes?Living"

④带列名导出,将空字符替换为指定值导出

test=#?copy?test?to?‘/tmp/test1.csv‘?with?csv?header?null?‘to?be?supplemented‘;COPY?5test=#?\!?cat?/tmp/test1.csvuser_id,user_name,age,gender,remark1,Jackie?Chan,45,male,"""police?story"",""project?A"",""rush?hour"""3,Brigitte?Li,46,female,to?be?supplemented4,Maggie?Cheung,39,female,to?be?supplemented5,Jet?Li,41,male,"""Fist?of?Legend"",""Once?Upon?a?Time?in?China"""2,Gong?Li,38,female,"""Farewell?My?Concubine"",""Lifetimes?Living"


如何将postgresql数据库表内数据导出为excel格式

上一篇:Deepin-15.11使用Datax同步MySQL数据(表-表)


下一篇:15.数据库备份