华为云云数据库GaussDB执行导入数据_云淘科技
完成GDS的安装部署及外表创建后,本节介绍如何在GaussDB数据库中创建目标表并将数据导入目标表中。
对于记录数超过千万条的表,建议在执行全量数据导入前,先导入部分数据,以查看数据倾斜状态,避免导入大量数据后发现数据倾斜,调整成本高。
前提条件
需要确保每一个CN和DN所在服务器到GDS服务器的IP和端口是互通的。
操作步骤
在GaussDB中创建目标表,用于存储导入的数据。建表语句请参见CREATE TABLE。
(可选)若导入表存在索引,在数据导入过程中,将增量更新索引信息,影响数据导入性能。建议在执行数据导入前,先删除相关表的索引。在数据导入完成后,再重新创建索引。
假定在导入表“product_info”上的“product_id”字段上存在普通索引“product_idx”。在执行数据导入前,请先删除相关索引。
1 |
DROP INDEX product_idx; |
在数据导入完成后,重建索引。
1 |
openGauss=# CREATE INDEX product_idx ON product_info(product_id); |
打开enable_stream_operator。
1 |
openGauss=# set enable_stream_operator=on; |
在重建索引过程中,用户可以通过临时增加GUC参数“maintenance_work_mem”/“psort_work_mem”来加快索引的重建。
执行数据导入。
1 |
openGauss=# INSERT INTO [目标表名] SELECT * FROM [foreign table 表名]; |
若出现以下类似信息,说明数据导入成功。请查询错误信息表,查看是否存在数据格式错误,详细操作请参见处理错误表。
INSERT 0 9
若出现数据加载错误,请参见处理错误表,并重新执行数据导入。
若执行过程中出现数据加载错误,则数据全部导入失败,没有数据导入至目标表中。
编写批处理任务脚本,实现并发批量导入数据。并发量视机器资源使用情况而定。可通过几个表测试,监控资源利用率,根据结果提高或减少并发量。常用资源监控命令有:内存和CPU监控top命令,IO监控命令iostat,网络监控命令sar等。相关案例请参见示例:多线程导入。
在资源许可的情况下,多台GDS服务器并发导入会很大程度上提高数据导入效率。相关案例请参见示例:多数据服务器并行导入。
对于高并发的GDS导入场景,为了保持GDS和DN间的数据连接稳定,可以将GDS服务器环境和DN所在环境的TCP Keepalive检测时间增长(推荐增长至5分钟)。调整集群环境的TCP Keepalive参数会影响故障检测的响应时间。
enable_stream_operator=on会影响性能,如果该会话后续还有别的sql执行,建议设置set enable_stream_operator=off,如果没有,则直接断开会话即可。
任务示例
创建一个名为reasons的目标表。
1 2 3 4 5 6 7 |
openGauss=# CREATE TABLE reasons ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) DISTRIBUTE BY HASH (r_reason_sk); |
在执行数据导入前,先删除相关表的索引。在数据导入完成后,再重新创建索引。
假定在导入表“reasons”上的“r_reason_id”字段上存在普通索引“reasons_idx”。在执行数据导入前,请先删除相关索引。
1 |
openGauss=# DROP INDEX reasons_idx; |
在数据导入完成后,重建索引。
1 |
openGauss=# CREATE INDEX reasons_idx ON reasons(r_reasons_id); |
打开enable_stream_operator。
1 |
openGauss=# set enable_stream_operator=on; |
将数据源文件中的数据通过外表“foreign_tpcds_reasons”导入到表“reasons”中。
1 |
openGauss=# INSERT INTO reasons SELECT * FROM foreign_tpcds_reasons ; |
父主题: 通过外表并行导入
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家