java - 映射多个文件中的多个列,这些文件略有不同

标签 java excel etl normalize talend

我正在寻找一种很好的实用方法来处理多个文件之间的元数据规范化,这些文件的架构略有不同,适用于 Talend 中的批量 ETL 作业。

我有几百个历史报告(每个报告大约 25K 到 200K 条记录),每个 Excel 文件大约有 100 到 150 列。所有文件的大多数列名称都是相同的(98% 重叠),但存在细微的邪恶差异:

  • 不同的列顺序
  • 不同的列名称(有时使用缩写,有时不使用缩写)
  • 不同的列数
  • 有时,列之间的单词之间有空格,有时,点、破折号或下划线之间有空格
  • 等等

除了编写专门的应用程序或通过手动更正所有文件来强制执行所有文件之外,是否有任何好的免费工具或方法可以以智能或半自动的方式提供文件列名之间的差异和更正?

最佳答案

您可以使用 Talend Open Studio 来实现这一目标。但我确实看到了一个警告。

官方方式

  1. 为了使 Talend 理解您的 Excel 文件,您需要首先加载其元数据。需要注意的是,您需要手动(一一)加载所有元数据。在 Talend (Open Studio Data) 的免费版本中,不支持动态元数据。

  2. 使用 tMap 等组件,您可以将输入元数据映射到所需的输出元数据(可以是 Excel 文件或数据库或其他内容)。在此步骤中,您可以将输入数据调整为所需的输出(修复/忽略/转换它/等)。

非官方方式

似乎存在一个用户贡献的组件,提供对 Excel 动态元数据的支持。我没有测试过,但值得尝试: http://www.talendforge.org/exchange/?eid=663&product=tos&action=view&nav=1,1,1

这可能会随着组件的频繁发布和更新而演变。 我的回答是关于 5.3.1 版本的状态

关于java - 映射多个文件中的多个列,这些文件略有不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12754233/

相关文章:

java - 如何阻止输出空变量?

java - 我将如何缩放像素阵列?

excel - xmlhttprequest 导致的 Unicode 字符

java - Apache POI 生成损坏的 Excel 文件

vba - 包含 <> 的 if 语句无法正常工作

docker - 如何将索引从自托管的Elasticsearch转换/迁移到ES Docker容器?

Java 枚举混淆

sql-server - 将字符串转换为 Int SSIS

mysql - 寻找更好的架构来从生产数据库生成报告

Java 以编程方式绕过代理 apache