簡體   English   中英

動態將數據寫入SQL Server表中的列

[英]Write data to columns in SQL Server table dynamically

我有一個約200列的.csv文件,列的順序一直在變化。 我想從文件中讀取每一行,在數據庫中標識相應的列名,並相應地將數據寫入表中。

為此,我可以使用一個簡單的開關案例來檢查列的名稱。 既然有200列,我想知道是否還有其他方法可以做到。

例:

    public void ColName(string str, Type a)
     {
       SampleTableName obj = new SampleTableName();
       obj."str" = a;
       connection.AddSampleTableName(obj);
       connection.savechanges();
     }

    /* SampleTableName has columns: [Name, Age] */
    ColName("Name","XYZ");
    Output:
    Name Age
    XYZ  NULL

有什么想法嗎? 謝謝。

如果列名相同,則可以使用SqlBulkCopy並添加列映射列表。 只要設置了DataTable名稱,順序就沒有關系。

DataTable table = CreateTable(rows);
using (var bulkCopy = new SqlBulkCopy(connectionString))
{
    foreach (var col in table.Columns.OfType<DataColumn>())
    {
        bulkCopy.ColumnMappings.Add(
            new SqlBulkCopyColumnMapping(col.ColumnName, col.ColumnName));
    }
    bulkCopy.BulkCopyTimeout = 600; // in seconds
    bulkCopy.DestinationTableName = "<tableName>";
    bulkCopy.WriteToServer(table);
}

如果列名不同,則可以使用字典來查找不同的名稱。

為了簡化維護目的,我嘆了口氣 但是,我編寫了一個小腳本,將所有這些字段值添加到表對象中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM