代码之家  ›  专栏  ›  技术社区  ›  SqlRyan

在Biztalk 2006中从非常大的CSV文件导入少量记录

  •  3
  • SqlRyan  · 技术社区  · 15 年前

    我有一个Biztalk项目,它导入传入的CSV文件并将其转储到数据库表中。导入工作正常,但我只需要从一个超过一百万行的文件中保存大约200-300条记录。我的编排丢弃了这些行,但问题是,我导入的平面文件仍然是250MB,当使用常规平面文件管道转换为XML时,处理需要几个小时,有时会导致服务器内存不足。

    我能做些什么让自定义管道本身丢弃我不关心的行吗?每个CSV行中的第一项是几个字符串中的一个,我只想保留以某个字符串开头的行。

    谢谢你能提供的帮助。

    1 回复  |  直到 15 年前
        1
  •  4
  •   tomasr    15 年前

    定制管道组件肯定是最好的解决方案;但它需要在反汇编组件之前的解码阶段执行。

    使其100%启用流式传输将是复杂的(但肯定是可行的),但根据生成的修剪CVS文件的大小,您可以在自定义组件运行后立即预处理整个输入文件,并在内存中(在MemoryStream中)生成结果(如果较小),或者将它们写入一个文件,然后将生成的文件流返回到BizTalk,以便从那里继续处理。