【问题标题】:transforming binary data using ssis and sql server 2008使用 ssis 和 sql server 2008 转换二进制数据
【发布时间】:2010-04-15 11:51:26
【问题描述】:

我的任务是导入/转换和提取包含文本数据和嵌入二进制数据的压缩二进制文件。数据中包含本质上是关系的数据,需要处理成定义的数据库结构。目前,我有一个 C# 单线程应用程序,它基本上从目录中获取所有文件(目前有 13K 个不同大小的文件),并在单个线程上逐行提取数据插入到数据库中。正如您可以想象的那样,这是一个非常缓慢且不可接受的过程。根据文件中的标头记录,使用了几种不同的解析例程。当所有数据都提取到行详细信息级别时,每个文件可能有多达一百万行。后续任务是根据内容将这些行解析为相应的表。即文本内容必须进一步解析为数据库中类似数据的“桶”。这大概概括了大局。现在是问题任务列表。

  1. 如何使用 SSIS 遍历数据包?在应用程序中,文件被解压缩,然后使用流数据类型和字节数组进行解析,并根据每个数据包的标头数据路由到所需的解析例程。还涉及位交换。我应该将应用程序代码包装成脚本任务并让它进行自定义处理吗?数据按年份分隔,SQL Server 表也按年份分区。我还需要能够“捕获”错误的文件数据并最有可能手动处理。

  2. 我是否应该简单地将压缩文件作为 blob 加载到 SQL 并使用 T-SQL 解析文件?如果这样做,那会是多线程的吗?不确定如何在此处涉及的 T-SQL 中进行解析。你认为哪个会更快?

  3. 当前通过文件处理的数据可能会通过套接字传递给我们。 SSIS 可以实时收集这些数据吗?我将如何进行设置?

从目录中处理这些新文件将成为一项日常任务。 一旦我将数据发送到 SQL Server,我就可以对其进行管理。对我来说,及时到达那里似乎是帐篷里的长杆。我将不胜感激该小组的任何 cmets 或建议。

瑞克

【问题讨论】:

    标签: sql-server visual-studio-2008 tsql ssis etl


    【解决方案1】:

    我认为您在这里不走运 - SSIS 不是用于此目的的工具。二进制操作不是他们在概念化时的想法。 SSIS 基本上是 ETL 流程的核心,用于加载包含各种数据的数据仓库。

    【讨论】:

    • 同意。尽管理论上您可以在脚本任务中执行类似的操作,但它确实是不适合这项工作的工具。
    • 我也在想同样的事情……只是想换个角度。我打算将处理到数据库中的数据(作为 varbinary 保存)带入 ssis 仓库。您是否发现该任务中存在数据未处理成特定数据类型的任何障碍?
    【解决方案2】:

    SSIS 可以正常工作。您可以通过不在单个任务中获取所有 13k 文件来改进该过程。您可以循环提取文件。根据 SSIS 机器上的 CPU 数量拆分文件。如果 C#app 可以精简,您可以将其放入脚本任务中。我有一个框架,可以让您并行移动文件。我用它将 .pdf 文件移动到 sql server 中。如果你给我你的电子邮件,我会转发给你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多