2017-09-05 12 views
1

CSVファイルを作成する外部アプリケーションがあります。これらのファイルをSQLに自動的に書き込むが、インクリメンタルにしたい。CSVファイルをSQLテーブルにインクリメント

バルクインサートを探していましたが、これは増分ではないと思います。 CSVファイルは膨大なものになりますので、インクリメンタルな方法があります。

ありがとうございます。

+0

アプリケーションでは、CSVファイルの行を書き込むコードを、レコードを挿入するコードに置き換えます。 –

+0

一括挿入は増分ではないと思いますか? 1つの挿入レコードは、一般に、以前の挿入に依存しません(制約などのようなものを無視します)。 –

+0

@ダンブラックク - ご感謝いただきありがとうございます。アプリケーションは外部アプリケーションです。私はそれを何も制御していません。だから私はSQLに書くことができなくなります。 – Abe

答えて

0

これを処理する通常の方法は、バルクステージングテーブルに全体のCSVを挿入し、ストアド・プロシージャと最終宛先テーブルにステージングテーブル内のデータの増分マージを行うことです。

これでもCSVファイルが大きすぎると懸念される場合は、次にCSVファイルを読み込んで、インポートする新しい/変更されたデータのみを含む切り詰めファイルを作成し、元のCSVよりも小さいCSVをバルク挿入します。

0
  • テーブルにロードするすべてのcsvファイルの名前を含むテキストまたはcsvファイルを作成します。繰り返されない場合はファイルパスを含めることができます。シェルスクリプトを使用してこれを行うことができます。

  • 次に、挿入する必要があるすべてのcsvファイル名をロードする一時テーブルを作成します。プロシージャを使用します。

  • 行の数で一時テーブル、ループの上に使用し、(ループ内で切り捨てずに)ターゲット・テーブルにロードします。 truncateが必要な場合は、ループの前に行います。変換が必要な場合は、ステージングにデータをロードできます(変換の手順を使用してください)。

同じ問題があり、この方法を使用していました。最近、我々はすべてのタスクを実行し、データをステージングテーブルにロードするPythonを使用するように切り替えました。変換後、最終的にターゲット表にロードされます。

関連する問題