2010-04-15 78 views
2

我有一个任务来导入/转换并提取包含文本数据以及嵌入式二进制数据的压缩二进制文件。数据内部是关系性数据,需要处理成定义的数据库结构。目前我有一个C#单线程应用程序,它基本上抓取目录中的所有文件(目前有13K个不同大小的文件),并通过插入数据库的行插入单个线程中提取数据。你可以想象这是一个非常缓慢的过程,不可接受。根据文件中的头文件记录,可以使用几种不同的解析例程。将所有数据提取到行级别的详细信息时,每个文件可能有多达100万行。后续任务是根据内容将这些行解析到适当的表中。即文本内容必须进一步解析成数据库中的相似数据的“桶”。这就是总结大局。现在针对问题任务列表。使用ssis和sql server 2008转换二进制数据

  1. 如何使用SSIS迭代数据包?在应用程序中,文件被解压缩,然后使用流数据类型和字节数组进行解析,并根据每个数据包的头数据被路由到所需的解析例程。还有一些交换涉及。我是否应该将应用程序代码包装到脚本任务中并让它执行自定义处理?数据按年分隔,SQL服务器表也按年分区。我需要能够“抓住”坏文件数据,并且最有可能手工处理。

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

  3. 潜在地,当前通过文件处理的数据可能通过套接字发送给我们。 SSIS能够实时收集这些数据吗?我将如何去设置它?

从目录处理这些新文件将成为一项日常任务。 我可以管理数据,一旦我把它到SQL Server。及时获得它似乎是我帐篷里的长杆子。我很感谢来自该组的任何意见或建议。

Rick

回答

2

我认为你在这里运气不佳 - SSIS只是不是工具。二元操纵不是他们想到时想到的。 SSIS基本上是ETL进程向核心数据仓库加载各种数据的核心。

+0

同意。尽管你在理论上可以在脚本任务中做这样的事情,但它确实是这项工作的错误工具。 – Meff 2010-04-15 15:12:07

+0

我在想同一件事......只是想获得不同的观点。我打算将处理完成的数据带入数据库(作为varbinary保存)到ssis仓库中。您是否看到任务中的任何障碍,因为数据未被处理成特定的数据类型? – Rick 2010-04-15 16:41:52

0

SSIS将工作得很好。您可以通过在单个任务中不抓取所有13k文件来改进流程。你可以循环拉入文件。根据你在SSIS盒上的CPU数量来分割你的文件。如果C#应用程序可以减少,你可以把它放到脚本任务中。我有一个框架可以让你并行移动文件。我用它将.pdf文件移动到sql server中。如果您向我发送您的电子邮件,我会将其转发给您。

相关问题