数据从excel到sql表是导入NULL值..为什么?
本文关键字:NULL 导入 为什么 excel sql 数据 | 更新日期: 2023-09-27 18:16:42
我正在从excel导入数据到数据库。以下是excel列的架构:下面是db....的模式并与excel表格数据完全匹配....................
ID integer
organizationId integer
categoryId integer
attribute text
Y1960 integer or null
Y1961 integer or null
Y1962 integer or null
Y1963 integer or null
Y1964 integer or null
Y1965 integer or null
Y1966 integer or null
Y1967 integer or null
Y1968 integer or null
Y1969 integer or null
在数据库列中也是如此。我使用以下代码检索first 10 columns from excel
文件的data。
OleDbConnection excelConnection =
new OleDbConnection(excelConnectionString);
//Create OleDbCommand to fetch data from Excel
OleDbCommand cmd = new OleDbCommand
("Select [ID],[organizationID],[categoryID],[parentID],[granularityLevel],[attribute],[Y1960],[Y1961],[Y1962],[Y1963],[Y1964],[Y1965] from [Details$]", excelConnection);
excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(connectionString);
sqlBulk.DestinationTableName = "Data";
sqlBulk.WriteToServer(dReader);
问题是Y1960 column is not copied
的数据从excel文件进入数据库表。其他列都是复制的,但是Y1960没有复制。
我在过去遇到过几次这个问题,我发现的解决方案是使目标数据类型为float。这里有一个建议,首先阶段的数据,然后转换,这也可能是一个选项转换数据类型错误时,从Excel导入到SQL Server 2008
我希望Y1960
是你的excel表格的第一行。
,当你做这个复制任务时,first excel sheet row take as title of column
,这就是为什么这一行不应该复制。你必须在你的工作表的顶部添加更多的行标题比你可以尝试。
我有同样的问题,两列没有得到正确复制,而是插入空值。解决我的问题是在扩展属性中设置HDR=NO。使所有列为Varchar。它适用于我的场景,因为我可以在SQL
中做VC中的所有事情。谢谢,TP
我的混合数据在从excel移动到Sql表时显示为Null。要解决这个问题,请在excel的连接字符串中添加IMEX选项。它告诉驱动程序总是将"混合"数据列作为文本读取。
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:'MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"