在实际工作中,我们经常会遇到统计数据的工作。有些维度的统计数据需要导出到excel作为报表附件,供不同部门审核。为了方便以后的比对工作,领导会在数据库中创建一个表专门记录数据。此时我们DBA需要将这些excel表导入数据库,copy和\copy命令为我们提供了解决方案。主要介绍如何利用copy命令将excel表格导入数据库。关于copy和\copy命令的区别,请通过另一篇文章《如何将postgresql数据库表内数据导出为excel格式》查看。
1.复制的基本语法
复制{表名[(列名[,])]
From { '文件名' | PROGRAMME '命令' | STDIN}
[[WITH](选项[,])]
选项可以是以下选项之一
FORMAT format _ name
冻结[布尔]
分隔符'分隔符'
空'空字符串'
HEADER[布尔值]
引用字符
转义字符
FORCE_QUOTE {(列名[,]) | *}
强制_非_空(列名[,])
编码“encoding_name”
2.参数含义介绍
FORMAT:指复制到文件中的文件类型,如CSV和文本。
冻结:冻结数据,然后执行真空冻结。
分隔符:导出文件时,分隔符指定需要单引号。在TEXT中,默认为tab,CSV文件默认为逗号。不支持二进制文件格式。
HEADER:指复制到文件时表的字段名。
NULL:指定一个空值,默认值为\ n。
QUOTE:在CSV模式下声明引号字符,默认为双引号。
ESACPE:指定转义字符,默认值为QUOTE值(通常是双引号)。
编码:指定文件的编码。如果未指定,默认情况下将使用客户端的字符集。
3.用例子
(1)编辑excel表格并填写测试数据。表单的保存格式是csv格式,编码原则是UTF-8,用逗号分隔。
(2)将excel表单上传到数据库服务器,根据表单字段创建相应的表单。
postgres=# create table movie _ star(user _ id int,user_name varchar(100),age int,gender text,address varchar(100),备注text);
创建表格
postgres=#
postgres=#
postgres=#
postgres=# select * from movie _ star;
user_id | user_name |年龄|性别|地址|备注
- - - - - -
(0行)
使用copy命令导入excel数据。
postgres=# copy movie _ star from '/pg/movie _ star . csv '带CSV头;
COPY 9
postgres=#
postgres=# select * from movie _ star;
user_id | user_name |年龄|性别|地址|备注
- - - - - -
1 |成龙| 45 |男|中国香港,亚洲|警察故事项目高峰时间