【问题标题】:Data Profiling on a File through SSIS通过 SSIS 对文件进行数据分析
【发布时间】:2020-07-25 01:00:58
【问题描述】:

我是 SSIS 开发的新手。我需要 SSIS 专家的一些指导。以下是问题列表:

我们有大小从 1GB 到 25GB 的 txt 或 dat 类型的文件,以制表符分隔。有时,这些文件可能包含无效行、无效数据类型或大量字符串值,导致将文件数据导入 SQL 表时失败

任何人都可以提供使用如何在加载到实际的 SQL 表之前对文件执行数据分析,例如

  • 列中具有 NULL 值的无效行数 文件中存在的行数 列中数据类型值错误的行数例如:有文件保存的机会
    int 字段中的字符串数据
  • 有时行分隔符在列之间,例如:如果文件中有 10 列,如果在 5-6 列之间存在行分隔符,这会导致当前行数据从 6 - 10 列移动到下一行。应在 Data Profiler 中检查此方案。
    • 在 SSMS 中是否有办法识别每行中的所有列都具有相等的列长度。如果它不存在抛出错误。但是识别这些行需要更快

【问题讨论】:

  • 非常假设的情况!需要深入分析以提供适当的反馈。
  • 定义“无效行”。我建议您首先将所有行导入单个VARCHAR 字段以检查相等的列长度。如果通过,您可以进入下一步,导入表中的多个VARCHAR 字段,并使用IS NULLIS_NUMERICLEN 等内容对它们进行检查。究竟是哪个版本的SQL?因为 SQL Server 2012 具有一些高级功能。另一种方法是编写一个外部控制台应用程序,该应用程序首先使用字符串函数检查文件并将其放入通过或失败文件夹中。

标签: sql ssis data-profiling


【解决方案1】:

我会将文本文件导入 SQL 表,并将所有列设置为 NVARCHAR 4000。IMO 即使在生产环境中,这也是最佳做法 - 你永远不能信任文本文件。

完成后,您可以将 SSIS 数据探查器工具指向表格。只需最少的努力,它就可以让您全面了解文件中的数据。

注意 SSIS 无法处理列内的行分隔符问题。如果您的源文件质量如此差,我会放弃 SSIS 平面文件源并使用脚本任务作为源来使用数据,并使用精心设计的拆分函数等来尝试解析文件。这不是一项简单的任务。

祝你好运!

【讨论】:

  • 这种情况可以用微软StreamInsight吗
  • 你的语法完全被破坏了——那是一个问题还是一个陈述?我希望您更加注意您的代码...
【解决方案2】:

当您打开数据流任务时,不是将数据加载到现有表中,而是在目标任务中创建新表。它会自动从您的源文件中创建一个具有完全相同数据类型/大小的表。之后,您可以根据需要转换和操作数据,然后将其加载到最终表格中。

【讨论】:

    猜你喜欢
    • 2012-07-07
    • 1970-01-01
    • 2017-11-22
    • 2013-11-06
    • 2015-06-04
    • 2014-04-09
    • 2016-05-04
    • 1970-01-01
    • 2020-12-13
    相关资源
    最近更新 更多