ETL:如何猜测具有大量空值的混乱CSV的数据类型

时间:2015-10-06 13:47:18

标签: ssis etl

我经常需要清理并将凌乱的CSV和Excel文件导入我的MS SQL Server 2014(但如果我使用的是Oracle或其他数据库,问题就会一样了。)

我找到了一种方法来与Alteryx一起做这件事。你能帮我理解我是否能用Pentaho Kettle或SSIS做同样的事情?或者,你能推荐另一个ETL软件来解决我的观点吗?

  1. 我经常拥有100,000条记录表,其中前90,000条记录可能为空。大多数ETL工具仅扫描前几百条记录以猜测数据类型,因此无法猜测这些字段的类型。在猜测类型之前,我可以强制Pentaho或SSIS扫描整个文件吗?我知道这对于许多GB的大型文件来说可能效率不高,但对于我处理的文件扫描整个文件比浪费大量时间尝试手动猜测每个字段要好得多
  2. 如上所述,但是字符串的长度。如果前10,000个记录是3个字符的字符串,但后续的字符串更长,则SSIS和Pentaho倾向于猜测nvarchar(3)并且导入将失败。在猜测字符串的长度之前,我可以强制它们扫描所有行吗?或者,我可以轻松强制所有字符串为nvarchar(x),我自己设置x?
  3. Alteryx有一个多场工具,在清洁或转换多个领域时特别方便。例如。我有10个日期列,其数据类型没有自动猜测。我可以使用多字段公式让Alteryx将所有10个字段转换为日期并创建名为$ oldfield_reformatted的新字段。 Pentajho和SSIS有类似的东西吗?
  4. 谢谢!

1 个答案:

答案 0 :(得分:0)

一个愚蠢的建议。在Excel中,在列表顶部添加一行,该行具有一个公式,该公式创建的文本字符串与列中最长值的长度相同。

这个以数组公式输入的公式可以做到这一点..

=REPT("X",MAX(LEN(A:A)))

您还可以使用更高级的VBA函数创建其他虚拟值以强制SSIS中的数据类型。

我没有使用SSIS或类似的东西,但是在过去我会将一个文件加载到一个表中,其中所有数据都是varchar 1000,所以加载了所有数据,然后使用它们将其处理到主表中按我的要求强制转换或删除数据值的SQL。

这给你终极控制而不是包或驱动程序。我听到这是如何工作的,我感到非常惊讶!