私のSQL Serverテーブルが挿入データ
Col1 | Col2 | Col3 | Col4 | Col5
と
私は私のデータテーブルからの値をマッピングするにはどうすればよいCol X | Col Y | Col Z
のような私のDataTableに見えるようになりますと仮定SQL Serverテーブルの特定の列
データテーブルには多数の行が含まれていますので、行単位の挿入を避けたいと考えています。
これを達成するにはどうすればよいでしょうか?
私のSQL Serverテーブルが挿入データ
Col1 | Col2 | Col3 | Col4 | Col5
と
私は私のデータテーブルからの値をマッピングするにはどうすればよいCol X | Col Y | Col Z
のような私のDataTableに見えるようになりますと仮定SQL Serverテーブルの特定の列
データテーブルには多数の行が含まれていますので、行単位の挿入を避けたいと考えています。
これを達成するにはどうすればよいでしょうか?
テーブル値パラメータとストアド・プロシージャを使用。
c#データテーブルと同じ構造のユーザー定義テーブルタイプを作成します。 この型の列は、列の順序を含め、c#データテーブルの列と正確に一致する必要があります。
CREATE TYPE dbo.MyTableType AS TABLE
(
ColX int, -- Must be the same data type of ColX in your c# data table
ColY nvarchar(200), -- Must be the same data type of ColY in your c# data table
ColZ float -- Must be the same data type of ColZ in your c# data table
)
次に、あなたが実際の列のマッピングを行いますストアドプロシージャ、作成することができます:あなたは「行挿入して、行の使用を避ける」によって何を意味
CREATE PROCEDURE InsertIntoMyTable
(
@TableToInsert dbo.MyTableType READONLY -- Table valued parameters must be readonly!
)
AS
INSERT INTO MyTable (Col1, Col2, Col3)
SELECT ColZ, ColX, ColY
FROM @TableToInsert
GO
これは、あなたが
SqlBulkCopy.WriteToServer方法(DataTableの)SqlBulkCopy オブジェクトのDestinationTableNameプロパティで指定された宛先表に
コピー供給DataTableのすべての行を助けるかもしれません。
https://msdn.microsoft.com/en-us/library/ex21zs8x(v=vs.110).aspx
これは、DatatableからSQLへのColumnMappingsを指定することによって使用できます。 – sidGupta
を? –
テーブル値のパラメータを持つストアドプロシージャを使用します。 –
@LeiYangこのシナリオでは、insertコマンドをループして、行を1つずつSQLテーブルに挿入することができます。私のデータテーブルには1000以上の行が含まれているので、このアプローチを使用したくありません。 – sidGupta