如何将excel表格数据导入postgresql数据库

实际的工作中,我们经常会碰到统计数据的工作,有些维度的统计数据因为工作需要我们需要导出为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!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐