[英]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.