我正在使用C#和SQL Server 2016从json数据中使用SqlBulkCopy
。>>
原始字符串是:"1979-09-30T23:00:00.000+0000"
但是当使用SqlBulkCopy
复制到SQL Server表中时,字符串变为"01/10/1979 00:00:00"
我正在使用varchar(100)
作为此列的数据类型。
我尝试使用date
,datetime
和datetimeoffset
数据类型,但是每次都遇到转换错误。
create table imp_Employees( matricule nvarchar(20), pname nvarchar(100), birthdate varchar(100) -- I tried with date, datetime and datetimeoffset data types, but I was getting conversion errors each time. )
如何保存原始数据?
public static void BulkCopy(DataTable myDataTable) { using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["2"].ConnectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { foreach (DataColumn c in myDataTable.Columns) bulkCopy.ColumnMappings.Add(c.ColumnName, c.ColumnName); bulkCopy.DestinationTableName = myDataTable.TableName; try { bulkCopy.WriteToServer(myDataTable); } catch (Exception ex) { log.Error(ex.Message); } } } }
这里是调用它的方法
public static void Employee() { try { DataTable MyTable = Clapi.GetApiData(ConfigurationManager.AppSettings.Get("api_employe"), "imp_Employees").GetAwaiter().GetResult(); log.Info(String.Format("Table: {0} Count {1}", MyTable.TableName, MyTable.Rows.Count)); Cldb.BulkCopy(MyTable); } catch(Exception ex) { log.Error(ex.Message); } }
//此处是GetApiData
public static async Task<DataTable> GetApiData(string Url ,string TableName)
{
try
{
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, Url);
var response = await client.SendAsync(request);
var contents = response.Content.ReadAsStringAsync().Result;
var Mytable = JsonConvert.DeserializeObject<DataTable>(contents);
Mytable.TableName = TableName;
return Mytable;
}
catch(Exception ex)
{
log.Error("GetApiData; url="+Url+";TableName:"+TableName+ex.Message);
return null;
}
}
我正在使用C#和SQL Server 2016从json数据中使用SqlBulkCopy。原始字符串是:“ 1979-09-30T23:00:00.000 + 0000”但是当使用SqlBulkCopy复制到SQL Server表中时,字符串.. 。
您可能在代码中使用了DateTimeOffset。