使用ssis和sql server 2008转换二进制数据

时间:2010-04-15 11:51:27

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

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

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

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

  3. 当前通过文件处理的数据可能通过套接字来到我们这里。 SSIS能否实时收集这些数据?我该如何设置呢?

  4. 从目录处理这些新文件将成为日常任务。 一旦我将数据传送到SQL Server,我就可以管理数据。及时到达那里似乎是我帐篷中的长杆。我将不胜感激小组的任何意见或建议。

    瑞克

2 个答案:

答案 0 :(得分:2)

我认为你在这里运气不好 - SSIS不是那个工具。二元操作不是他们在构思时所考虑的。 SSIS基本上是ETL过程的核心,用于加载具有各种数据的数据仓库。

答案 1 :(得分:0)

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