0

ステージング テーブルからデータを取得し、同じデータを SQL Server データベースのそれぞれの新しい場所に挿入するプログラムを C# で作成しています。プログラムは次の手順を順番に実行します。

  1. ステージング テーブルの最初の行から列を選択する
  2. 各列を一意の変数として保存
  3. データベース内の新しいそれぞれの場所にデータを挿入します (各値は DB 内の複数の異なるテーブルに移動し、値は多くのテーブル間で複製されます)
  4. 次のレコードに移動
  5. すべてのレコードが処理されるまで、ステップ 1 から繰り返します

レコード セット全体を繰り返し処理し、列の各結果を一意の変数として格納する方法はありますか?格納する値ごとに個別のクエリを作成する必要はありません。すべてどこかに行かなければならない 51 の列があり、データベースへのカスタム クエリを使用して 51 の変数をそれぞれハードコーディングするのはあまり効率的ではないと思いました。

多次元配列でこれを行うことを考えましたが、それは大量の値を持つ 1 つの文字列にすぎません。アドバイスをいただければ幸いです。

4

2 に答える 2

2

これは.NETアプリケーションを介して行うことができますが、実際には、SQLステートメントを使用するとはるかに簡単に実現できます。SQLには、テーブル間でデータを移動するための優れた構文があります。

INSERT INTO [Destination] ([Columns,])
SELECT [Columns,]
FROM [Source]

データベース間でデータを移動する場合は、一方のデータベースをもう一方のデータベースにリンクしてから、クエリを実行するだけです。SQL Server Management Studioを使用している場合は、この記事に従ってリンクサーバーをセットアップできます。それ以外の場合は、このsp_addlinkedserver手順を使用してリンクサーバーを登録できます。

于 2012-10-05T18:56:22.367 に答える
0

テーブルの各列のプロパティを含むクラスを作成し、Dapper のようなマイクロ ORM を使用して、データベースからそれらのクラスのインスタンスのリストを設定できます。次に、リストを反復処理して、他のテーブルに挿入できます。

個々の挿入用に他のクラスを作成し、AutoMapper を使用してソース クラスからそれらのインスタンスを作成することもできます。

しかし...これは、あなたが達成しようとしていることに対してすべてやり過ぎかもしれません。

于 2012-10-05T20:31:48.597 に答える