Greenplum数据库导入导出数据有多种方法,但其中性能最佳者非gpfdist莫属。gpfdist的使用非常简单: 1. 配置并启动gpfdist 使用gpdmin登录服务器
gpfdist -d /data -p 8888 -l /tmp/gpfdist.log &
-d 后面跟数据保存路径 -p 是gpfdist所使用的端口,自行定义,无冲突即可 -l 后面是gpfdist操作日志的存放路径 & 是后台运行,这样即便退出server登录,也不会中断gpfdist服务 完成后,可使用以下命令检查是否正常运行:
ps -ef|grep pfdist
2. 导入数据 2.1创建可读外部表
create external table externameTableName (col1 datatype1, col2 datatype2…………)
LOCATION('gpfdist://服务器IP:端口/dataFile') FORMAT '数据源类型' (HEADER DELEMITER AS ',') encoding 'utf-8';
上述内容中: externameTableName: 外部表名 dataFile 为要导入的数据源文件,比如sd.dat, sd.sql等 数据源类型:建议使用csv或sql。比如txt文件,由于没有包含格式,涉及非文本型数据时,可能会出错。 encoding:建议使用utf-8。 注:有些文章说还要log errors into err.test_csv,这个是用于保存出错信息的。但从Greenplum 5开始已经不用了,所以不需理会。 2.2 导入数据库 这一步就当是进行表间的insert操作,非常简单快捷:
insert into target_table
select * from externameTableName;
搞定! 3. 导出数据 导出数据与导入数据相比,无非就是外部表的创建,需要创建可写外部表。即:
create writable external table externameTableName (col1 datatype1, col2 datatype2…………)
LOCATION('gpfdist://服务器IP:端口/dataFile') FORMAT '数据源类型' (HEADER DELEMITER AS ',') encoding 'utf-8';
成功后,也可以当成数据库中的表来正常操作即可。如:
insert into externameTableName
select * from gpTableName;