我正在尝试将excel数据导入sql server数据库。一切正常,除了一列,其中excel中的格式是datetime,而我数据库中的数据类型是时间。当我尝试插入数据时,它无法将日期时间转换为时间。
我的代码是:
OleDbCommand exclCmd = new OleDbCommand("select * from [Sheet1$]", exclConnection);
exclConnection.Open();
OleDbDataReader exclReader = exclCmd.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
sqlBulk.DestinationTableName = "test_excel";
sqlBulk.ColumnMappings.Add("col1", "col1");
sqlBulk.ColumnMappings.Add("col2", "col2");
sqlBulk.ColumnMappings.Add("col3", "col3");
sqlBulk.ColumnMappings.Add("col4", "col4");
sqlBulk.WriteToServer(exclReader);
我尝试使用“选择con1,col2,col3,转换(时间,col4)作为[Sheet1 $]中的col4”,但转换功能无法使用。
任何人都可以帮助我吗?感谢。
答案 0 :(得分:0)
如果登台表是一个选项,您可以使用TEXT(col4,“dd mmmm yyyy hh:mm:ss”)将Excel日期转换为字符串。一旦数据在临时表中,您可以编写适当的SQL语句以插入到正确的表中。
我会将SSIS用于此类任务,因为这样可以更好地控制数据转换。