暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ETL工具Kettle配置Microsoft Excel输出超出文件限制行数时解决办法

IT那活儿 2024-01-08
3528

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!  


介 绍
使用ETL工具可以完成从目标数据源进行数据抽取,经过一系列的数据转换,最终形成需要的数据模型并加载到数据库中Kettle可以对多种数据源进行抽取(Extraction)、加载(Loading)、数据落湖(Data Lake Injection)、对数据进行各种清洗(Cleaning)、转换(Transformation)、混合(Blending),并支持多维联机分析处理OLAP)和数据挖掘(Data mining)。

解决办法
当配置转换是Excel输出数据时,当表输入的数据量过大超出Excel文件的限制条数时(限制行数为1048576),就会发生报错,数据进入Excel文件的数据会不全,我们这时候就可以在转换中设置多个Excel文件进行数据的输出,对数据进行分发。具体配置及内容如下:
2.1 kettle配置Excel输入(分发数据)
图1-1: Kettle配置文件输入流程图
图1-2: Kettle配置文件输入流程图
表输入:
图1-3: Kettle配置文件输入流程图
  • 步骤名称:该数据转换命名。
  • 数据库连接:连接的数据源。
  • 获取SQL查询语句:通过选择数据库中的数据表默认生成SQL语句。
  • SQL输入框:自定义SQL语句。
  • 替换SQL语句中的变量:如果需要传入参数则勾选上。
  • 从步骤插入数据:如果该组件有上一步骤,且需要从该步骤中获取变量作为参数则选中上一步骤。
  • 执行每一行:如果上一步骤是一个集合且该表输入需要遍历集合进行查询则勾选上。
  • 记录数量限制:限制要查询的数据记录数,0表示没有限制。
2.2 Excel输出
文件&工作表:
图1-4: Kettle配置文件输出流程图
  • 步骤名称:该转换Excel输出步骤命名。
  • 文件名:文件输出的路径(可通过【浏览】选择路径)。
  • 扩展名:Microsoft Excel输出支持xls以及xlsx格式,当数据量较大时,选择xlsx并勾选Stream XSLX data速度会比较快。
  • 在文件中包含步骤数:选择在扩展名之前输出文件名中添加副本号,例如:nnnn_0。
  • 在文件中包含日期:选择在扩展名之前输出日期,例如:_20231230。
  • 在文件名中包含时间:选择在扩展名之前输出日期。
  • 指定日期时间格式:选择将文件名添加到内部文件结果集,此内部结果集稍后处理所有已创建的文件。
  • 如果文件已存在:覆盖原文件/使用现有文件输出。
  • 在接受到文件前不创建文件:点选框,选择已创建输出文件,当数据流中没有行数时,这可以避免创建空文件。
  • 结果中添加文件名:选择将文件名添加到内部文件名结果集,此内部结果集稍后可用于处理所有一床键的文件。
  • 工作表名:可对Excel文件中的sheet页进行命名。
  • 设为活动工作表:打开Excel文件的第一个sheet页。
  • 如果输出文件已存在工作表:覆盖原工作表/输出至已存在的工作表中。
  • 保护工作表(仅限XLS格式):保护当前XLS的Excel表格,选择此项后输入保护人及密码。
  • 使用模板创建新文件:选择以使用指定在Excel模板来创建输出文件,如果选择此选项,则还必须在Excel模板字段中指定模板文件命名。
  • 模板文件:如果选中了上面的“创建新文件时使用模板”复选框,则输入要使用的模板文件名,或单击“浏览”按钮并导航到该文件。
  • 使用模板创新工作表:如果要使用指定的模板工作表创建输出工作表,请选择此选项。选择此选项可指定用于创建输出图纸的模板图纸。如果选择此选项,还必须在下面的“模板工作表”字段中指定模板工作表的名称。如果不想指定样板图纸,请清除此选项。
  • 模板工作表:如果选中了上面的“创建工作表时使用模板”复选框,则输入要使用的工作表名称,或单击“浏览”按钮并导航到该名称。
内容:
图1-5: Kettle配置文件输流程图
  • 开始输出自单元格:默认A1,我们在分页导出数据输出到Excel时,该字段需要使用变量替代。
  • 当输出记录时:覆盖已存在的单元格/下移已有单元格。
  • 输出表头:选择输出表头。
  • 输出表尾:输出表尾。
  • 强制公式重新计算:重新计算公式。
  • 不改变现有单元格格式:不改变现有单元格格式。
  • 在表的末尾开始写(追加行):在工作表的结尾,追加写入数据。
  • 抵消行数:在往工作表写入数据时,抵消多少行。
  • 在写入文件前添加的空行数:在工作表中写入内容前,先写入多少空行。
  • 删除表头:删除excel中的表头部分。
  • 字段:点击获取字段可获取表输入中SQL逻辑中编写的字段名称。
配置到这里后,整个表输入Excel文件输出的转换流程就结束了,就可以启动流程了
图1-6: Kettle配置文件启动数据转换流程图
图1-7: 表输入总数据条数图
图1-8: Excel文件输出文件大小
图1-9: Excel文件输出文件(测试1)中存在的条目数
图1-10: Excel文件输出文件(测试2)中存在的条目数
如上图所示,当对表输入数据量大时可以配置多个Microsoft Excel文件数据输出时,Excel文件输出的数据会对表输入的数据进行分布式分发,可解决数据输出时数据量大的问题。

END



本文作者:陈梦媛(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论