簡體   English   中英

SQL大容量復制掩蓋數據類型

[英]SQL Bulkcopy coverting data type

在我的.Net項目中,我正在加載CSV文件,因此我可以獲取該數據,對其進行一些處理,然后將結果發送到excel文件中。

我正在通過代碼中的數據表來處理此問題。 在結果文件中,我添加了一個新列,稱為“ resetdate”,我這樣做是這樣的:

nettingTable.Columns.Add("resetdate");

清除所有空單元格中的數據,並將值設置為DBNull以使我的數據庫不會出錯。 該代碼如下所示:

public DataTable PreProcess(DataTable dt)
{
    foreach (DataColumn col in dt.Columns)
        if (_config.ColumnNames.Contains(col.ColumnName))
        {
            foreach (DataRow row in col.Table.Rows)
            {          
                // We only care about the date
                // This trims out the any time values that may have automatically been added               
                if(row[col].ToString().Length > 10)
                {                               
                    row[col] = row[col].ToString().Substring(0, 10);
                }
                if (row[col].ToString().Length == 0)
                {
                    row[col] = DBNull.Value;
                }
            }
        }
    return dt;
}

這里沒有開創先河,而且長期以來一直奏效。 但是,我的新列resetdate是要從我的CSV文件中名為nextresetdate的列中填充的,我正在使用以下代碼進行操作:

foreach (DataRow dr in nettingTable.Rows)
{
   dr["resetdate"] = dr["nextresetdate"];
}

填充ResetDate所有內容后,它將被發送到我的數據庫,在該數據庫中,我有一個表名為“ ResetDate ”的列,該列的值為“ DateTime ”。同樣,這一切在以前都沒有問題。

現在,當我嘗試使用上述更改運行代碼時,收到以下錯誤消息:

行:2-453錯誤:來自數據源的String類型的給定值無法轉換為指定目標列的int類型。

內部異常讀取為:

InvalidOperationException:無法將數據源中String類型的給定值轉換為指定目標列的datetime類型。

我嘗試將代碼修改為:

foreach (DataRow dr in nettingTable.Rows)
{
    // this was done both as I've wrote and passing 
    // in the intended value as a variable, same result
     dr["resetdate"] = DateTime.Parse(dr["nextresetdate"]); 
}

但是我得到了同樣的錯誤。 我在這里做錯什么事?

僅使用列名的DataColumnCollection::Add()重載將string分配為新列的數據類型,如該鏈接所述。 您是否嘗試了以下方法?

nettingTable.Columns.Add("resetdate", typeof(DateTime));

暫無
暫無

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

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