COPY 导入数据方法
1、生成数据文件
$ cat source.txt
11111ddd22222
2、替换分隔符
2.1 使用gpadmin用户COPY数据到Greenplum中
$ cat replaceScript.sh
#!/bin/sh
# 生成隐藏字符
soh=`echo 1 | awk '{printf("%c", $1)}'`
replaceWord=$1
# 替换开始
sed -i 's/'$replaceWord'/'$soh'/g' $2
# 插入到greenplum数据库
cd /greenplum/soft/greenplum-db-5.8.0/bin
./psql -d ***** -h 192.****** -p 5432 -U gpadmin -c "COPY xiaoxu_test.xiaoxu_test FROM '/home/xiaoxu/gpload_test/$2' WITH csv DELIMITER E'\001' LOG ERRORS SEGMENT REJECT LIMIT 3000 ROWS";
标红的部分最好不用,这样可以确保数据的准确性。
E'\001' : 是ascii分隔符,详情请查看:https://blog.csdn.net/xfg0218/article/details/80901752
2.2使用非gpadmin用户COPY数据到Greenplum中
安装psql命令
#yum install postgresql -y
psql -d ****** -h 192.168.****** -p 5432 -U gpadmin -c "\\COPY xiaoxu_test.xiaoxu_test FROM '/home/xiaoxu/gpload_test/$2' WITH csv DELIMITER E'\001' LOG ERRORS SEGMENT REJECT LIMIT 3000 ROWS";
注意\\的问题
3、查看效果
$ sh psqlInsert.sh ddd source.txt
COPY 1
ddd: 是分隔符
source.txt:带有分隔符的文件
4、查看官网说明
http://postgresql.ru.net/manual/sql-copy.html
5、Shell脚本导入数据
# vi copyToGreenplum.sh
#!bin/sh
# 获取为文件所在的位置
basepath=$(cd `dirname $0`; pwd)
# scheam名字
scheamname='xiaoxu_test'
# 表名字
tablename='*******_20180812_20180812'
# 数据库名字
gpdatabase='******'
# gp服务器ip
gpip='192.168.******'
#gp port
gpport='2345'
# gp user
gpuser='gpadmin'
# 需要插入的文件的名字
dirfilename='mv_*****_20180812.csv'
# 替换双引号与隐藏字符
# sh asciiReplaceScriptAll.sh
# gp copy 开始时间
gpinsert_time=`date +'%Y-%m-%d %H:%M:%S'`
echo -e "GP COPY 数据开始...."
# 执行插入操作
psql -d $gpdatabase -h $gpip -p $gpport -U $gpuser -c "COPY $scheamname.$tablename FROM '$basepath/$dirfilename' WITH csv DELIMITER E'\001'";
# gp copy 结束时间
gpinsert_endtime=`date +'%Y-%m-%d %H:%M:%S'`
gpinsert_start_seconds=$(date --date="$gpinsert_time" +%s)
gpinsert_ent_seconds=$(date --date="$gpinsert_endtime" +%s)
time_of_use=$((end_seconds-start_seconds))
echo -e "\t $((time_of_use/3600)) h $((time_of_use%3600/60)) m $((time_of_use%3600%60)) s"
6、性能总结
6.1千兆网卡的性能总结
6.1.1 数据量的大小
$ du -sh mv_*******_20180812.csv
130G mv_*******_20180812.csv
6.1.2 查看数据的内容
$ head -n 1 mv_*******_20180812.csv
310000645D0435BED45B39E0531ECDA8C0463F2018020413595200008546上海佐洽房地产经纪有限公司闵行第一分公司3101120018106392151K7032018-02-02 00:00:00200000150214137361900-01-01 00:00:002018-02-02 00:00:002018-02-02 00:00:0031011210*************************000000000001900-01-01 00:00:0002018-08-08 09:54:29.000000,E20180204,E20180205,E20180206,E20180207,E20180212,E20180718,E2015030410e635326b318d6881ca0214c0831e6e65P01MA1GBWMN991310112MA1GBWMN9972E3B618BF6B3365E0531ECDA8C05E49E20150304D9FC431BDDA2CF143DDB0A89F76036F7**************
6.1.3 开始导数据
$ sh copyToGreenplum.sh
GP COPY 数据开始....
COPY 90700000
GP COPY 总耗时: 2 小时 32 分钟 8 秒
$ sh copyToGreenplum.sh
GP COPY 数据开始....
o0COPY 90700000
GP COPY 总耗时: 2 小时 54 分钟 35 秒
$ sh copyToGreenplum.sh
GP COPY 数据开始....
o0COPY 90700000
GP COPY 总耗时: 2 小时 46 分钟 35 秒
6.1.4 查看表的详细信息
select count(*) from*******_20180812;
2,7210,0000
select pg_size_pretty(pg_relation_size('*******_20180812'))
137 GB
6.2 万兆网卡的性能总结
6.2.1 数据量的大小
$ du -sh mv_enterprisebaseinfo_20180812.csv
130G mv_enterprisebaseinfo_20180812.csv
6.2.2 查看数据的内容
$ head -n 1 mv_enterprisebaseinfo_20180812.csv
310000645D0435BED45B39E0531ECDA8C0463F2018020413595200008546上海佐洽房地产经纪有限公司闵行第一分公司3101120018106392151K7032018-02-02 00:00:00200000150214137361900-01-01 00:00:002018-02-02 00:00:002018-02-02 00:00:0031011210*************************000000000001900-01-01 00:00:0002018-08-08 09:54:29.000000,E20180204,E20180205,E20180206,E20180207,E20180212,E20180718,E2015030410e635326b318d6881ca0214c0831e6e65P01MA1GBWMN991310112MA1GBWMN9972E3B618BF6B3365E0531ECDA8C05E49E20150304D9FC431BDDA2CF143DDB0A89F76036F7*******************
6.2.3 开始导数据
$ time psql -d stagging -h 192.168.***** -p 5432 -U gpadmin -c "COPY xiaoxu.*******_20180812_20180814 FROM '/home/xiaoxu/greenplum-load-data/oracle-export-greenplum/mv_*******_20180812.csv' WITH csv DELIMITER E'\001' LOG ERRORS SEGMENT REJECT LIMIT 3000 ROWS"
COPY 90700000
real 22m13.116s
user 0m0.003s
sys 0m0.002s
6.2.4 查看表的详细信息
select pg_size_pretty(pg_relation_size('*******_20180812_20180812'))
137 GB
select count(*) from *******_20180812_20180812;
2,7210,0000
分布键详细信息
select gp_segment_id,count(1) from *******_20180812_20180814 group by 1;
6.3 监控信息
6.3.1 主节点网卡信息
6.3.2 主节点的磁盘读写信息
6.3.3 主节点的CPU使用率信息
6.3.4 数据节点网卡信息
6.3.5 数据节点的磁盘读写信息
6.3.6 数据节点的CPU使用率信息
COPY 导出数据方法
1 查看表中的数据文件
2 导出CSV数据文件
$ psql -d ***** -h 192.168****** -p 5432 -U gpadmin -c "copy datafix.xiaoxu_df_entname to '/home/xiaoxu/shujudingzheng/data-dir/entname.csv' WITH DELIMITER AS E'\u0001' "
COPY 11807
3 查看导出的数据格式
$ head -n 3 entname.csv
11000020e38b8c4353938c014370906a7e0004中赣核(北京)投资发展有限公司
440000440125125021998031700074许村龙渡电镀厂
440000P-4da509af-be89-4ef8-b24a-4a4e97a96b57海宁市许巷乡郭湾村房屋装潢服务部