数据从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没有复制。

数据从excel到sql表是导入NULL值..为什么?

我在过去遇到过几次这个问题,我发现的解决方案是使目标数据类型为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"