4.Greenplum数据导出

2.3 导出

把实体表数据导出为文本文件同样可以使用gpfdist服务下的外部表和copy命令来实现。Copy导出与导入一样,也是逐个postgresql进行的,在效率上是都低于gpfdist。因为gpfdist是同时从所有的segment向目标文件写数据,是真正的并行工具。不知道为什么EMC公司一直没有将postgresql的COPY,这个应用这么成熟的工具改造升级为并行工具(COPY可以通过非GP的方法来做并行导入导出,但是较为麻烦,且不好监控,暂且不表,可能也很难再表……)。
Gpfdist导出是通过创建可写外部表来实现的。对比只能做select操作的可读外部表,可写外部表也只能做insert操作。

2.3.1 使用Gpfdist下的外部表导出

使用gpfdist当然要首先保证gpfdist 服务是在运行着的。
etl@smdw:~> ps -ef|grep gpfdist
etl 8404 7503 0 11:17 pts/3 00:00:00 grep gpfdist
etl 22913 1 1 Jul07 pts/3 01:12:26 gpfdist -d /backup/etl_data -p 9091 -l /home/etl/gpfdist_9091.log
etltest 26466 1 0 Jul08 pts/3 00:00:44 gpfdist -d /backup/etl_data -p 9092 -l /home/etltest/gpfdist_9092.log
etl@smdw:~>
要保证启动gpfdist的用户etl对目录/backup/etl_data有写的权限。

首先创建可写外部表:
create writable external table stage.tf_f_user_w_external (字段1,字段2,字段3……)
LOCATION ('gpfdist://smdw-1:9091/output/DATAFILE20120718.txt') ……
然后写insert语句:
Insert into stage.tf_f_user_w_external(字段1,字段2,字段3……)
Select字段1,字段2,字段3…… from stage.tf_f_user;
这个select 部分可以随便写,只要字段与外部表的字段能一致对应就可以了,例如:
Insert into stage.tf_f_user_w_external(字段1,字段2,字段3……)
Select a.字段1,b.字段2,c.字段3…… from stage.tf_f_user a inner join stage.tf_f_xxx b on a.user_id=b.user_id;

然后执行这个insert语句就可以把实体表的内容写到可写外部表所指定的文本文件中了(文本文件可以事先不存在,如果存在则对外部表的insert操作会向文本文件里追加数据)。
OK,这样我们就实现了以生成文本文件为目的的导出了。

2.3.2 使用Copy导出

简洁!!
psql -d bi -h xx -p dd -c "\copy (select * from ods.ods_d_mytest) to /home/gpadmin/_hcb/my_data.txt"
-d是数据库名;-h是主master名或ip;-p是数据库端口号;-c是执行命令。
这个跟postgresql原本的copy导出是一模一样的,不到五分钟你就能使用起来。
可以对select 语句进行加工变换以实现多样的导出需求,
也可以在编程的过程中各种对copy批量操作。

2.3.3 使用令人心碎的pg_dump/gp_dump导出(备份)

Pg_dump是逐个节点来串行对外写文件的。
Gp_dump是所有节点同时并行向外写文件的。
一看就知道pg_dump没什么可以说的了,但是还是要提一下,pg_dump是本身postgresql的工具,有一个比较吸引人的优点,它可以直接导出gz压缩的文件,可惜到了EMC这里却没什么发展。

Gp_dump比pg_dump强大,因为它是一个真正的并行工具。
使用gp_dump,首先一定要注意:禁止做全库备份!
因为我们的数据量绝对是海量(GP就是为了海量而生),全库备份即没有必要,而且可能也几乎不能实现。
同时GP系统本身有镜像机制,每行数据都是双份存储的,所以也没有必要做全库备份。很奇怪,EMC为什么没有禁止掉他的全库备份功能。
Gp_dump可以用来把一个表的数据导出为文本文件,并且可以直接生成为压缩文件(这一点非常好)。
但是,导出表数据为文本文件不是纯的数据文件,就是生成的文本文件里面会包含一堆什么GP万岁之类的话,没有找到什么参数去掉,不利于导入到别的类型的数据库里,很是讨厌。例如:
大家执行gp_dump -t 'ods.ods_xmx' -a bi -U gpadmin,把bi库里面的表ods.ods_xmx导出。
完成之后,查看gp_dump_0_3_20120318164648这样格式名称的文件会发现包含了以下废话:
-- Greenplum Database database dump
另外还能发现gp_dump实际上就是一个封装了copy的东西,通过多 个copy并行来实现导出。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容