在没有任何外部库的情况下,在c#中执行简单的SSIS样式的数据流
本文关键字:执行 简单 数据流 样式 SSIS 情况下 任何外 | 更新日期: 2023-09-27 18:19:49
我正在寻找一个C#中的简单数据流示例,而不依赖SSIS或外部库,如Rhino ETL(这是一个非常好的库,BTW)。
要求:
- 一个任意ADO.Net数据源
- 一个任意ADO.Net数据目的地
- 不需要一次将整个数据集加载到内存中,这样它就可以处理任意大的数据集。它需要依赖某种缓冲区,或者像Rhino ETL那样的"收益回报"
- 使用大容量插入(即SqlBulkCopy)
- 最小变换。没有查找,没有合并联接
- 如果单线程可以完成此工作,则不需要多线程
另一种陈述问题的方式。。。Rhino ETL是如何做到这一点的,但没有所有的抽象和继承类,也没有庸医词典?我想在一个简单的非抽象类中看到它。
还有另一个问题的改写:我正在寻找一个基本的例子,即获取"选择"查询的数据流输出,并一次以10000或50000条记录的数量将其大容量插入目的地,而不将整个结果加载到内存中,这可能会超过可用RAM。
您似乎想了解etl程序是如何工作的,以增加编程知识。Rhino ETL是一个开源项目,因此您可以在这里获得源代码:
https://github.com/ayende/rhino-etl
以及他们是如何做到这一点的。还有其他的ETL包是开源的,所以你可以看到他们做事情的方式不同。例如,talend源可以在以下位置找到:
http://www.talend.com/resources/source-code.php
当然,如果你试图编写自己的代码用于商业用途,你不想看到其他人的源代码,所以你需要自己制定流程。
希望这对你有帮助!
恐怕还远远不是一个完整的答案。
您可以使用此处列出的一种或多种技术在.Net中"分页"任意选择查询的结果。
http://msdn.microsoft.com/en-us/library/ff650700.aspx
这应该允许您对数据进行分组,并避免RAM问题。
或者,如果您现有的SSIS包足够简单/相似,那么考虑一下基于模板自动生成SSIS包可能是值得的。例如,我正在维护100多个包,这些包是由一个小型c#应用程序使用用于SSIS的EzAPI API自动生成的。