【发布时间】:2010-04-15 11:51:26
【问题描述】:
我的任务是导入/转换和提取包含文本数据和嵌入二进制数据的压缩二进制文件。数据中包含本质上是关系的数据,需要处理成定义的数据库结构。目前,我有一个 C# 单线程应用程序,它基本上从目录中获取所有文件(目前有 13K 个不同大小的文件),并在单个线程上逐行提取数据插入到数据库中。正如您可以想象的那样,这是一个非常缓慢且不可接受的过程。根据文件中的标头记录,使用了几种不同的解析例程。当所有数据都提取到行详细信息级别时,每个文件可能有多达一百万行。后续任务是根据内容将这些行解析为相应的表。即文本内容必须进一步解析为数据库中类似数据的“桶”。这大概概括了大局。现在是问题任务列表。
如何使用 SSIS 遍历数据包?在应用程序中,文件被解压缩,然后使用流数据类型和字节数组进行解析,并根据每个数据包的标头数据路由到所需的解析例程。还涉及位交换。我应该将应用程序代码包装成脚本任务并让它进行自定义处理吗?数据按年份分隔,SQL Server 表也按年份分区。我还需要能够“捕获”错误的文件数据并最有可能手动处理。
我是否应该简单地将压缩文件作为 blob 加载到 SQL 并使用 T-SQL 解析文件?如果这样做,那会是多线程的吗?不确定如何在此处涉及的 T-SQL 中进行解析。你认为哪个会更快?
当前通过文件处理的数据可能会通过套接字传递给我们。 SSIS 可以实时收集这些数据吗?我将如何进行设置?
从目录中处理这些新文件将成为一项日常任务。 一旦我将数据发送到 SQL Server,我就可以对其进行管理。对我来说,及时到达那里似乎是帐篷里的长杆。我将不胜感激该小组的任何 cmets 或建议。
瑞克
【问题讨论】:
标签: sql-server visual-studio-2008 tsql ssis etl