FusionInsight平台——LibrA(MPP)批量数据导入
FusionInsight平台——LibrA(MPP)批量数据导入
LibrA(MPP)批量数据导入
COPY导入
- 多数数据库拥有该命令
- 适用: 低并发,本地小数据量导入
- 示例:
--从/home/jerry/data01.txt文件拷贝数据到表tb_test COPY tb_test FROM '/home/jerry/data01.txt' WITH( format 'text', -- 导入格式为TEXT(format 'text') delimiter ',', -- 分隔符为','(delimiter ',') ignore_extra_data 'true', -- 忽略多余列(ignore_extra_data 'true') noescaping 'true' -- 不指定转义(noescaping 'true') );
GDS导入
- 架构图:
- 利用多个DataNode并行将数据导入到LibrA数据库中
- 适用: 高并发、大数据量导入
- 操作示例:
- 数据导入流程图
- 蓝色路径:建立外表指向服务器的GDS进程,GDS进程指向数据源路径
- 橙色路径:执行SQL,从外表插入数据到实际表。外表向GDS进程取数据,GDS从数据路径获取
- GDS工具安装
- GDS工具由华为提供 Gauss200-OLAP-V100R006C10-REDHAT-64bit-gauss-loader.tar.gz
- 在Linux服务器上解压后,进入gauss_loaders目录
- 执行install_gaussload.sh 命令,即可安装
- gds命令在…/gauss_loaders/bin/gds/gds
- GDS工具运行
- 示例: …/gauss_loaders/bin/gds/gds -d /data/test -p 192.168.0.10:5000 -H 192.168.0.115/24 -l /home/jerry/log/gds_log.txt -D -t 2
- 命令解释:
-d 指定数据路径文件夹; -p 指定GDS进程IP和端口;-H 指定MPP数据库其中一台主节点服务器IP; -l 指定日志输出文件
- 在MPP库中建立外表
- 建外表示例:
CREATE FOREIGN TABLE foreign_test ( -- 外表字段结构应和实际表一样,但不能加字段约束等类似的标记 name VARCHAR(20), phone VARCHAR(20), address VARCHAR(30) ) SERVER gsmpp_server OPTIONS ( location 'gsfs://192.168.0.10:5000/*', -- location参数 指定了GDS所在的服务器 format 'CSV', mode 'normal', encoding 'utf8', delimiter ',', -- delimiter参数 指定了数据源每个字段之间的分割符 quote E'\x1b', null '', fill_missing_fields 'false' ) LOG INTO err_test PER NODE REJECT -- LOG INTO err_test 指定了错误日志的输出到err_test表(会自动创建) LIMIT 'unlimited';
- 数据源样例
路径: /data/test/p-0001 内容: 小明,18912345678,北京 小王,15112345678,重庆 小红,13912345678,上海
- 执行SQL,导入数据至LibrA(MPP)
- 确保数据源已经准备好
- 确保GDS进程已经配置正确,且已开启
- 确保MPP库中外表建立无误
- 使用SQL查询外表数据,插入到实际表中
- 插入SQL示例:
INSERT INTO tb_test SELECT * FROM foreign_test;
- 数据导入流程图
HDFS导入
- 将HDFS上的大量数据快速导入到LibrA(MPP)
- 适用: 大批量导入;HDFS上数据量过大,无法导出到本地使用GDS导入。
- 操作示例:
- 取得当前库的外部数据服务访问权限(后续补充)
- 创建指向HDFS目录的外表,示例:
CREATE FOREIGN TABLE region_test( name TEXT, phone TEXT, address TEXT ) SERVER hdfs_server -- 外部数据服务名称 OPTIONS( FORMART 'orc', -- 数据文件格式,目前只支持orc格式 FOLDERNAME '/data/test' -- HDFS数据存储路径 ) DISTRIBUTE BY roundrobin;
- 执行SQL,导入数据至LibrA(MPP)
INSERT INTO tb_test SELECT * FROM foreign_test;