实际的工作中,我们经常会碰到统计数据的工作,有些维度的统计数据因为工作需要我们需要导出为excel作为报表附件供不同的部门审查。为了方便以后的对比工作,领导会让在数据库中创建一张表,用于专门记录这些数据。此时我们dba需要将这些excel表格导入到数据库中,copy和\copy命令为我们提供了解决办法,本文主要通过copy命令的使用,介绍如何将excel表格导入至数据库中。关于copy及\copy命令的区别,请广大博友通过另一篇文章《》查看。
1、copy基本语法
copy { 表名 [ ( 列名称 [, ...] ) ] from { '文件名' | program '命令' | stdin } [ [ with ] ( 选项 [, ...] ) ] 选项可以是下列内容之一 format 格式_名称 freeze [ 布尔 ] delimiter '分隔字符' null '空字符串' header [ 布尔 ] quote '引用字符' escape '转义字符' force_quote { ( 列名称 [, ...] ) | * } force_not_null ( 列名称 [, ...] ) encoding 'encoding_name(编码名)'
2、参数含义介绍
format:指复制到文件的文件类型,如:csv,text。
freeze :冻结数据,然后执行vacuum freeze。
delimiter:指在导出文件时的分隔符指定需要用单引号。在text时默认为tab,csv文件默认是逗号。不支持binary文件格式。
header:指在复制到文件时带上表字段名称。
null:指定null值,默认为\n。
quote: 声明 csv 模式里的引号字符,缺省是双引号。
esacpe: 指定转义符,缺省是 quote 值(通常是双引号)。
encoding:指定文件的编码,如果没有指定就默认使用客户端的字符集。
3、使用示例
①编辑excel表格,填充测试数据,表格的保存格式为csv格式,编码原则为utf-8,逗号分隔。
②将excel表格上传至数据库服务器,根据表格字段创建对应表。
postgres=# create table movie_star(user_id int,user_name varchar(100),age int,gender text,address varchar(100),remark text); create table postgres=# postgres=# postgres=# postgres=# select * from movie_star ; user_id | user_name | age | gender | address | remark ---------+-----------+-----+--------+---------+-------- (0 rows)
③使用copy命令导入excel数据。
postgres=# copy movie_star from '/pg/movie_star.csv' with csv header; copy 9 postgres=# postgres=# select * from movie_star ; user_id | user_name | age | gender | address | remark ---------+---------------+-----+--------+-------------------+------------------------------------------ 1 | jackie chan | 45 | male | hk,china,asia | police story project a rush hour 2 | gong li | 38 | female | "singapore",asia | farewell my concubine lifetimes living 3 | brigitte lin | 46 | female | hk,china,asia | 4 | maggie cheung | 39 | female | hk,china,asia | 5 | jet li | 41 | male | "singapore",asia | fist of legendonce upon a time in china 6 | jacky cheung | 35 | male | hk,china,asia | 7 | chow yun fat | 48 | male | hk,china,asia | 8 | donnie yen | 36 | male | hk,china,asia | 9 | stephen chow | 40 | male | hk,china,asia |
④查看上传至服务器内的excel表格数据
postgres=# \! cat /pg/movie_star.csv user_id,user_name,age,gender,address,remark 1,jackie chan,45,male,"hk,china,asia ",police story project a rush hour 2,gong li,38,female," ""singapore"",asia", farewell my concubine lifetimes living 3,brigitte lin,46,female," hk,china,asia", 4,maggie cheung,39,female,"hk,china,asia ", 5,jet li,41,male,"""singapore"",asia", fist of legendonce upon a time in china 6,jacky cheung ,35,male,"hk,china,asia", 7,chow yun fat,48,male,"hk,china,asia", 8, donnie yen,36,male,"hk,china,asia", 9,stephen chow,40,male,"hk,china,asia",
通过在excel表格我们可以看到,将excel表格保存为csv格式(utf-8,逗号分隔)后,系统自动对表格内的数据进行了格式转换,部分字段内加入了转义符,比如双引号,逗号等,避免了数据导入出错。
到此这篇关于如何将excel表格数据导入postgresql数据库的文章就介绍到这了,更多相关excel表格数据导入postgresql数据库内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!