Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis ETL:如何猜测有大量空值的混乱CSV的数据类型_Ssis_Etl - Fatal编程技术网

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

Ssis ETL:如何猜测有大量空值的混乱CSV的数据类型,ssis,etl,Ssis,Etl,我经常需要清理和导入凌乱的CSV和Excel文件到我的MS SQL Server 2014中(但如果我使用Oracle或其他数据库,问题也会一样) 我已经找到了一种方法来使用Alteryx。你能帮我理解我是否能用Pentaho水壶或SSI做同样的事情吗?或者,你能推荐另一个ETL软件来解决我下面的问题吗 我经常有表,比如100000条记录,其中前90000条记录可能为空。大多数ETL工具只扫描前几百条记录来猜测数据类型,因此无法猜测这些字段的类型。我可以强制Pentaho或SSI在猜测类型之前扫

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

我已经找到了一种方法来使用Alteryx。你能帮我理解我是否能用Pentaho水壶或SSI做同样的事情吗?或者,你能推荐另一个ETL软件来解决我下面的问题吗

  • 我经常有表,比如100000条记录,其中前90000条记录可能为空。大多数ETL工具只扫描前几百条记录来猜测数据类型,因此无法猜测这些字段的类型。我可以强制Pentaho或SSI在猜测类型之前扫描整个文件吗?我知道这对于很多GB的大文件来说可能不是很有效,但是对于我处理的文件来说,扫描整个文件比浪费大量时间手动猜测每个字段要好得多
  • 如上所述,但长度为字符串。例如,如果前10000条记录是一个3个字符的字符串,但随后的记录更长,SSI和Pentaho倾向于猜测nvarchar(3),导入将失败。我可以强制他们在猜测字符串长度之前扫描所有行吗?或者,我可以轻松地强制所有字符串为nvarchar(x),在这里我自己设置x
  • Alteryx有一个多字段工具,在清理或转换多个字段时特别方便。例如,我有10个日期列,其数据类型不是自动猜测的。我可以使用多字段公式让Alteryx将所有10个字段转换为日期,并创建名为$oldfield_的新字段。Pentajho和SSI有什么相似之处吗

  • 谢谢大家!

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

    作为数组公式输入的此公式将执行此操作

    =REPT("X",MAX(LEN(A:A)))
    
    您还可以使用更高级的VBA函数创建其他虚拟值,以强制SSI中的数据类型

    我没有使用SSIS或类似的东西,但在过去,我会将一个文件加载到一个包含所有varchar 1000列的表中,以便加载所有数据,然后使用SQL将其处理到主表中,根据需要强制转换或删除数据值


    这将为您提供最终控制,而不是包或驱动程序。听到这个消息我非常惊讶

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

    作为数组公式输入的此公式将执行此操作

    =REPT("X",MAX(LEN(A:A)))
    
    您还可以使用更高级的VBA函数创建其他虚拟值,以强制SSI中的数据类型

    我没有使用SSIS或类似的东西,但在过去,我会将一个文件加载到一个包含所有varchar 1000列的表中,以便加载所有数据,然后使用SQL将其处理到主表中,根据需要强制转换或删除数据值


    这将为您提供最终控制,而不是包或驱动程序。听到这个消息我非常惊讶

    使用IMEX阅读Excel会有所帮助。有关更多详细信息,请参阅下面的文章[你确定没有限制吗?例如,如果我按照文章建议修改注册表,Excel真的会扫描100000条记录文件中的所有记录吗?SSIS中CSV文件的连接管理器在“建议类型”框中有“行数”输入,但也有上限-根据软件类型,上限为1000或10000条记录e版本在这种情况下,我一直非常喜欢使用Awk对文件进行采样,以便将更具代表性的选择传递到暂存中:
    Awk'BEGIN{srand()}!/^$/{if(rand())@Pythonista anonymous。我以前采用此解决方案时,不需要更改注册表,但我的问题恰恰出现在绝大多数记录为空,并且只填充了一小部分记录的情况下。这意味着采样可能会产生每个记录都为空的样本…读取使用IMEX编辑Excel会有所帮助。有关更多详细信息,请参阅下面的文章[你确定没有限制吗?例如,如果我按照文章建议修改注册表,Excel真的会扫描100000条记录文件中的所有记录吗?SSIS中CSV文件的连接管理器在“建议类型”框中有“行数”输入,但也有上限-根据软件类型,上限为1000或10000条记录e版本在这种情况下,我一直非常喜欢使用Awk对文件进行采样,以便将更具代表性的选择传递到暂存中:
    Awk'BEGIN{srand()}!/^$/{if(rand())@Pythonista anonymous。我以前采用此解决方案时不需要更改注册表,但我的问题恰恰出现在绝大多数记录为空,并且只填充了一小部分记录的情况下。这意味着采样可能会产生每个记录都为空的样本…我哈我在小文件上做了一些非常类似的事情,但我希望ETL工具尽可能地自动化它,因为当使用Excel无法处理的文件时,或者使用太多的表(例如,10个表,每个表有50个字段)时,这种方法很乏味,或者根本不可行我在小文件上也做过类似的事情,但我希望ETL工具尽可能地将其自动化,因为当使用Excel无法处理的文件时,或者使用太多的表(例如,10个表,每个表有50个字段)时,这种方法很乏味,或者根本不可行