SqlBulkCopy使用US格式将字符串转换为datetime

时间:2014-10-28 12:35:56

标签: c# sql-server datetime datatable

我将日期从未知来源(可能是csv / SQL Server)转移到应用程序数据库,因为我不知道数据的来源我首先将数据导入到保留表中(所有Varchar列) )然后我测试列中的值是否与应该匹配的值并导入数据库或标记数据错误

要传输数据,我将数据加载到C#中的DataTable中,然后使用SqlBulkCopy将数据插入到保留表中。这一切都正常,但我遇到了datetime列的问题。在C#DataTable中,日期值是YMD格式并存储为字符串,holing表中的列是varchar(255)但在某些时候传输过程中日期被转换为DMY格式,然后导致当我尝试验证保留表中的日期时出现问题。

我要加载DataTable:

cmd.CommandText = string.Format("SET DATEFORMAT YMD; {0}", cmd.CommandText);

SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd);
DataTable returnTable = new DataTable();

dataAdapter.Fill(returnTable);

要传输数据:

    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(DBContext.ConnectionString, SqlBulkCopyOptions.KeepNulls))
    {
        bulkCopy.DestinationTableName = "HoldingTable";
        bulkCopy.BatchSize = 10000;

        foreach (impMap im in ImportMapping.Where(i => i.IsImported))
        {
            bulkCopy.ColumnMappings.Add(im.MappingColumn, im.TableField.FieldName);
        }

        foreach (SqlBulkCopyColumnMapping m in columnMappings)
        {
          bulkCopy.ColumnMappings.Add(m);
        }

        bulkCopy.WriteToServer(dataDataTable);  
   }

0 个答案:

没有答案