0

我正在将数据从 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文件数据。

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。那里只有空值可用。

4

4 回答 4

0

我遇到了同样的问题,两列没有正确复制,而是插入空值。解决我的问题的方法是在扩展属性中设置 HDR=NO。将所有列设为 Varchar。它适用于我的场景,因为我可以在 SQL 中作为 VC 做所有事情

谢谢, TP

于 2013-06-13T18:28:11.903 回答
0

过去我遇到过几次这个问题,我找到的解决方案是将目标数据类型设为浮点数。这里有一个建议是先暂存数据,然后进行转换,这也可能是一个选项从 Excel 导入 SQL Server 2008 时转换数据类型时出错

于 2013-06-01T08:39:04.593 回答
0

我希望Y1960是你的 Excel 表的第一行。

当您当时执行此复制任务时,first excel sheet row take as title of column这就是不应复制此行的原因。您必须在工作表顶部添加多行标题才能尝试。

于 2013-06-01T08:45:35.620 回答
0

将混合数据从 excel 移动到 Sql 表时,我的混合数据显示为 Null。要在 excel 的连接字符串中解决此添加 IMEX 选项。它告诉驱动程序始终将“混合”数据列作为文本读取。

Provider=Microsoft.Jet.OLEDB.4.0;数据源=D:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""

于 2017-02-03T21:21:05.637 回答