2012-01-06 13 views
1

SSISやRhino-ETLなどの外部ライブラリに頼ることなくC#で簡単なデータフローのサンプルを探しています(これは非常に優れたライブラリです、BTW)。シンプルなSSISスタイルのデータフローを外部ライブラリなしでC#で行う

要件:それは扱うことができるように

  • 一つの任意のADO .NETデータ・ソース
  • 一つの任意のADO .NETデータ先
  • は、一度にメモリにロードされるデータセット全体を必要としません任意に大きなデータセット。 Rhino ETLのように、何らかのバッファーや「利回りリターン」に頼る必要があります。
  • バルク挿入(すなわち、SqlBulkCopy)を使用します。
  • 最小限の変換。ルックアップはなく、マージ結合もありません。
  • シングルスレッドでジョブを実行できる場合、マルチスレッドは必要ありません。

質問を述べる別の方法... Rhino ETLはこれをどのようにしていますが、抽象クラスと継承されたクラスはまったくなく、クォーキング辞書なしでどうしますか?私は単純な非抽象クラスでそれを見たいと思います。

質問のもう1つの言い回し:私は、 "select"クエリのデータフロー出力を取って、一度に1万レコードまたは50,000レコードで大量にそれを読み込まずに宛先に挿入するという基本的な例を探しています結果全体がメモリに格納され、使用可能なRAMを超える可能性があります。

+0

私は恩恵を申し出ることを検討しています(ただし、私はほとんど手に入れることができません)。 – Korey

+0

Rhino ETLがあなたの要件に合っている場合、そのRhino ETLを使用できない理由を尋ねることがありますか? – alexn

+0

部分的に教育プロセスとして...私は誰かがこの種のことについてのブログを持っていないことに驚いています。第三者図書館の承認を得ることが不可能に近いため、部分的に政治的です。私は、プロジェクトが大きくなるにつれて、100 + SSISパッケージのリファクタリングが非現実的に近づくにつれて、扱いにくくなっていくSSISから離れたいと考えています。 – Korey

答えて

1

プログラムの知識を増やすためにetlプログラムの仕組みを学びたいと思うようです。

https://github.com/ayende/rhino-etl

と、彼らはそれを行う方法を正確に参照してください。あなたがここにソースを得ることができるので、 RhinoのETLは、オープンソースプロジェクトです。また、オープンソースのETLパッケージもあります。そのため、さまざまな方法で作業を行うことができます。あなたが商業的使用のために独自のコードを記述しようとしている場合は、あなたが他の人のソースコードを見たいと思ってませんので、あなたが必要とする、もちろん

http://www.talend.com/resources/source-code.php

:たとえば、Talendのソースはで見つけることができますあなた自身のプロセスを思い付くことができます。

希望すると、これが役立ちます。

+0

私は、 "select"クエリのデータフロー出力を取って、結果全体をメモリにロードせずに一度に10,000レコードまたは50,000レコードに一括して挿入するという基本的な例を探しています。 RAM。 – Korey

1

完全な回答から遠慮しています。

ここで説明した1つ以上の手法を使用して、.Net内の任意の選択クエリの結果を「ページング」することができます。

http://msdn.microsoft.com/en-us/library/ff650700.aspx

これは、チャンクまでのデータをにあなたをできるようにし、RAMの懸念を避ける必要があります。

既存のSSISパッケージがシンプル/類似の場合は、テンプレートに基づいて自動的にSSISパッケージを生成することができます。たとえば、SSISのEzAPI APIを使用して小さなc#アプリケーションによって自動的に生成される100以上のパッケージを維持しています。

+0

Webアプリケーションのページングは​​私が探しているものではありません。私は1つのSQLクエリで全体の結果を照会したいが、すべてが到着した後ではなく、到着時にデータを処理したい。 EzAPIは何百ものパッケージを管理する興味深いソリューションのように見えます。私はそれを見てみましょう。 – Korey

+0

私がページングを言ったとき、私はあなたが自由に要求するチャンクにデータを分割することをもっと考えていました。あなたはウェブページを作成するためにこれを行うでしょう。しかし、クライアントアプリケーションがストリーミングとメモリ使用を制限するのに便利です。 –

関連する問題