我有一个 csv 文件,我需要再添加一列(截至日期)并使用 c# 将它们保存到 oracle 表中。我所做的是将数据添加到 Datatable 并使用 OracleBulkCopy 将所有数据插入到 db 表中。
现在的问题是,当我在 Toad 中检查我的 oracle 表时,第一列显示我 10/08/1320 并且显然 oracle 无法存储早于 1900 的日期。当我从 Toad 中勾选该字段时,它告诉我“The指定的日期超出了 ...." 的支持日期范围。
以下是我尝试过的其他三种解决方案,它们都有同样的问题。
using Oracle.DataAcccess.Client;
//Solution 1
DataTable dt = new DataTable();
dt.Columns.Add("Product_Date",typeof(DateTime));//The first column of my oracle table is Date
dt.Columns.Add(....);
...
//loop my csv file
DataRow dr = dt.NewRow();
dr[0] = new DateTime(2013,10,8);
dr[1] = ...;
...
dt.Rows.Add(dr)
OracleBulkCopy bc = new OracleBulkCopy(myConn);
bc.DestinationTableName = "TableName";
bc.WriteToServer(dt);
//Solution 2
DataTable dt = new DataTable();
dt.Columns.Add("Product_Date",typeof(OracleDate));//The first column of my oracle table is Date
dt.Columns.Add(....);
...
//loop my csv file
DataRow dr = dt.NewRow();
DateTime dtime = DateTime(2013,10,8);
dr[0] = new OracleDate(dtime);
dr[1] = ...;
...
dt.Rows.Add(dr)
OracleBulkCopy bc = new OracleBulkCopy(myConn);
bc.DestinationTableName = "TableName";
bc.WriteToServer(dt);
//Solution 3
DataTable dt = new DataTable();
dt.Columns.Add("Product_Date",typeof(string));//The first column of my oracle table is Date
dt.Columns.Add(....);
...
//loop my csv file
DataRow dr = dt.NewRow();
DateTime dtime = DateTime(2013,10,8);
dr[0] = dtime.ToString("ddMMMyy");
dr[1] = ...;
...
dt.Rows.Add(dr)
OracleBulkCopy bc = new OracleBulkCopy(myConn);
bc.DestinationTableName = "TableName";
bc.WriteToServer(dt);