文档首页 > > 开发指南> 导入数据> 使用GDS从远端服务器导入数据> 执行导入数据

执行导入数据

分享
更新时间: 2019/11/12 GMT+08:00

完成GDS的安装部署及外表创建后,本节介绍如何在DWS数据库中创建事实表并将数据导入事实表中。

对于记录数超过千万条的表,建议在执行全量数据导入前,先导入部分数据,以进行数据倾斜检查和调整分布列,避免导入大量数据后发现数据倾斜,调整成本高。

前提条件

GDS服务器和DWS集群之间网络可以互通。

  • 需要创建一个弹性云服务器作为GDS服务器。
  • 创建的弹性云服务器与DWS集群应处于同一区域、同一虚拟私有云和子网。

操作步骤

  1. DWS中创建目标表,用于存储导入的数据。建表语句请参见CREATE TABLE
  2. (可选)若导入表存在索引,在数据导入过程中,将增量更新索引信息,影响数据导入性能。建议在执行数据导入前,先删除相关表的索引。在数据导入完成后,再重新创建索引。

    1. 假定在导入表“product_info”上的“product_id”字段上存在普通索引“product_idx”。在执行数据导入前,请先删除相关索引。
      DROP INDEX product_idx;
    2. 在数据导入完成后,重建索引。
      CREATE INDEX product_idx ON product_info(product_id);

  3. 执行数据导入。

    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参数会影响故障检测的响应时间。

任务示例

  1. 创建一个名为reasons的目标表。
    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);     
  2. 在执行数据导入前,先删除相关表的索引。在数据导入完成后,再重新创建索引。
    1. 假定在导入表“reasons”上的“r_reason_id”字段上存在普通索引“reasons_idx”。在执行数据导入前,请先删除相关索引。
      DROP INDEX reasons_idx;
    2. 在数据导入完成后,重建索引。
      CREATE INDEX reasons_idx ON reasons(r_reasons_id);
  3. 将数据源文件中的数据通过外表“foreign_tpcds_reasons”导入到表“reasons”中。
    INSERT INTO reasons SELECT * FROM foreign_tpcds_reasons ;
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区