【声明:此内容转自
,如涉及版权问题,请与我们联系删除!】在不同的数据库系统之间进行数据共享,如果存在物理网络隔离、数据库异构、数据安全机制要求等情况,数据导出、转移、导入则是常常使用的一种稳妥数据共享方式,此时数据库的导出性能、导出位置等能力则显得尤其重要。
目前GBase 8a集群支持两类导出方式,一类是SERVER端导出(本地导出、HDP导出、FTP/SFTP导出),另一种则是远程导出。远程导出(简称RMT导出)是一种将数据从集群服务器导出到集群客户端所在机器的方式,导出后的数据为指定格式的平面文本文件。其导出流程示意图如下:
原理步骤说明:
1、执行远程导出语句后,GCCLI检查是否存在同名文件。GCCLI启动监听端口,创建监听线程和导出线程,发送给GCLUSTER。
2、GCLUSTER生成查询计划下发给GNODE。
3、GNODE执行查询,连接GCCLI,将分片查询结果发送到GCCLI。
4、GCCLI接收来自GNODE的数据,并将数据写入目标文件。
语法参数说明:
GBase 8a MPP远程数据导出是SQL命令方式导出,无需按照配置导出工具即可完成数据的远程导出,其语法为:
rmt:select_syntax INTO OUTFILE 'file_path' [OUTFILE_OPTIONS]
file_path:保存导出数据的路径及文件名,如果是相对路径,导出文件存放到用户登录客户端时所在目录 + file_path指定的路径
OUTFILE_OPTIONS:数据导出规则
远程导出端口设置:
在配置文件*/gcluster/config/gbase_8a_gcluster.cnf的client部分设置参数,*代表数据库的安装目录位置。远程导出功能默认使用导出客户端所在机器的16066-16165端口范围作为导出服务的临时端口。
其他的常用参数:
remote_export_thread_buffer_size
功能:设置远程导出时存放临时数据的buffer大小
数据类型:unsigned long
默认值:32 (单位:MB)
remote_export_first_rows
功能:通过hint方式将first_rows关键字下发到Data节点执行,促使Data节点在完成指定行数的结果集物化后,立刻发送给客户端
数据类型:unsigned long
默认值:0 (即不启用)
参数名:remote_export_debug,远程导出日志参数控制
取值范围:0-1,0表示关闭,1表示开启,默认值为0
作用:当该参数的值为1时,进行远程导出时会在/tmp目录下生成rmt_export.log文件,该文件中记录了远程导出过程中的相关调试信息。
参数名:remote_export_create_directory,
取值范围:0-1,0表示关闭,1表示开启,默认值为0
作用:当使用FILESIZE参数进行远程导出时,可能会出现使用同名多次导出时,每次生成的文件数不相同的情况。这种情况会导致其他导入程序无法准确识别某次导出任务的文件。在该值为1的情况下会自动创建与导出文件同名的目录,并在该目录下生成导出文件。
使用示例:
在GBase 8a MPP中建表,并插入测试数据,表结构如下:
Create table test(
Col1 int,
Col2 varchar(20)
);
INSERT INTO test VALUES(1,'esc\\ape'),(2,'CR\nLF'),(3,NULL);
1)字段分隔符、字段包围符、转移字符指定的导出语句示例:
参数FIELDS TERMINATED BY是字段分隔符,ENCLOSED BY是字段包围符,ESCAPED BY是转移字符。
2)行结束符、行开始符设置的导出语句示例:
参数LINES TERMINATED BY 是行结束符,STARTING BY 是行开始符
3)导出带表头
参数名称是WITH HEAD
4)空值导出转换
参数名称是NULL_VALUE
5)写模式指定,是否覆盖写
参数名称是writemode by overwrites,加上该参数表明是覆盖写模式。
6)导出文件按指定大小切分
说明:由于文件分裂功能需要在写入文件时对数据进行拆行并计算大小,所以使用文件分裂功能可能会导致导出性能下降,且由于每行数据长度可能不统一,为了保证数据完整性,每个文件都会存放完整的行数据,所以拆分后每个文件的实际大小会大于或小于FILESIZE指定值。
7)BLOB类型的数据导出示例
先使用如下语句,构建测试用例:
gbase> CREATE TABLE tb(id INT, bl LONGBLOB);
gbase> INSERT INTO tb VALUES(1,'aaa'),(2,'bbb');
导出BLOB类型的参数是FIELDS BLOBMODE,有两种模式,一种是type_base64直接库中存储BLOB模式,另一种是URL方式,参数指定导出类型为type_url。
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
添加我为好友,拉您入交流群!
请使用微信扫一扫!