sqlbulk経由でSQLに挿入する

sqlbulkcopy

質問

こんにちは、私はこのような狙撃されたコードを持っています:

 public static void Put_CSVtoSQL_Adhesion()
    {
        bool IsFirst = true;      
        DataTable dt = new DataTable();
        string line = null;
        int i = 0;

        try
        {
            string fileName = Path.Combine(HttpContext.Current.Server.MapPath(UploadDirectory), TheFileName);

            using (StreamReader sr = File.OpenText(fileName))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    string[] data = line.Split(';');
                    if (data.Length > 0)
                    {
                        if (i == 0)
                        {
                            foreach (var item in data)
                            {
                                dt.Columns.Add(new DataColumn());
                            }
                            i++;
                        }
                        DataRow row = dt.NewRow();
                        row.ItemArray = data;

                        // Pour enlever la tete 
                        if (!IsFirst) dt.Rows.Add(row);
                        IsFirst = false;
                    }
                }
            }

            using (var connectionWrapper = new Connexion())
            {
                var connectedConnection = connectionWrapper.GetConnected();
                using (SqlBulkCopy copy = new SqlBulkCopy(connectionWrapper.conn))
                {
                    int CountColl = dt.Columns.Count;

                    copy.ColumnMappings.Add(0, 1);
                    copy.ColumnMappings.Add(1, 2);
                    copy.ColumnMappings.Add(2, 3);
                    copy.ColumnMappings.Add(3, 4);
                    copy.ColumnMappings.Add(4, 5);


                    copy.DestinationTableName = "cotisation";
                    copy.WriteToServer(dt);
                }
            }
        }
        catch (Exception excThrown)
        {
            throw new Exception(excThrown.Message);
        }
    }

このコードはうまくいきますが、今では60カラム以上ありますが、1から60カラムまで手動で入力しなければならないのでしょうか、それとも別のメソッドがありますか?

 copy.ColumnMappings.Add(0, 1);
                    copy.ColumnMappings.Add(1, 2);
                    copy.ColumnMappings.Add(2, 3);
                    copy.ColumnMappings.Add(3, 4);
                    copy.ColumnMappings.Add(4, 5);

... 60カラムまで?

最初のカラムがIDとして自動インクリメントされているので、カラムはすべて同じです。

受け入れられた回答

ループを書く?

for (int i = 0; i < dt.Columns.Count - 1; i++)
{
    copy.ColumnMappings.Add(i, i + 1);
}


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ