脚本任务从 Excel 批量复制到 Sql Server 2008。标题后缺少第一行

Posted

技术标签:

【中文标题】脚本任务从 Excel 批量复制到 Sql Server 2008。标题后缺少第一行【英文标题】:script task bulkcopy from Excel to Sql Server 2008. Missing first row after the header 【发布时间】:2015-09-13 13:23:36 【问题描述】:

我目前正在将数据从具有标题的 Excel 工作表加载到 SQL Server 中的表中。我在 SSIS 中使用脚本任务。一切正常,只是它没有加载标题后的第一行。如果我将该行移动到工作表的底部,它会正确加载。

以下是我正在使用的代码:

string excelconnectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fullPath + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";

OleDbConnection oledbconn = new OleDbConnection(excelconnectionstring);
Dts.Variables["User::FileLoaded"].Value = false;

try

    OleDbCommand oledbcmd = new OleDbCommand(exceldataquery, oledbconn);
    oledbconn.Open();
    OleDbDataReader dr = oledbcmd.ExecuteReader();


    SqlBulkCopy bulkcopy = new SqlBulkCopy(sqlconnectionstring);
    bulkcopy.BatchSize = 1000;
    bulkcopy.DestinationTableName = sqltable;

    while (dr.Read())
    
        bulkcopy.WriteToServer(dr);
    

    Dts.Variables["User::FileLoaded"].Value = true;

catch (Exception e)

    MessageBox.Show(e.Data + " " + e.InnerException + " " + e.Message + " " + e.Source);           
    Dts.Variables["User::FileLoaded"].Value = false;

finally

    oledbconn.Close();
    Dts.TaskResult = (int)ScriptResults.Success;

【问题讨论】:

当您将违规行移动到工作表底部时,是否会加载新的“标题后的第一行”? 是的,新的第一行完美加载。仅当我使用格式刷使用上一行格式化整个违规行时,才会加载“旧”行。我认为问题与旧的第一行如何开始和完成有关,因为批量复制没有“看到”它。我不确定如何以编程方式解决此问题,我不想为我正在加载的每个文件手动执行此操作。 【参考方案1】:

好的,所以我通过更改我使用的方法解决了这个问题。现在一切正常。

我使用了一个数据适配器,如下所示。我仍然不知道为什么以前的代码不能正常工作

OleDbDataAdapter 适配器 = new OleDbDataAdapter(exceldataquery, oledbconn); 适配器.Fill(dataTable);

            SqlBulkCopy bulkcopy = new SqlBulkCopy(sqlconnectionstring);
            bulkcopy.BatchSize = 1000;
            bulkcopy.DestinationTableName = sqltable;

            bulkcopy.WriteToServer(dataTable);

【讨论】:

以上是关于脚本任务从 Excel 批量复制到 Sql Server 2008。标题后缺少第一行的主要内容,如果未能解决你的问题,请参考以下文章

SSIS 将数据从 SQL db 复制到同一 excel 目标上的多个选项卡

SqlServer表和excel数据批量复制方法

查询值和目标字段的数量不同 - C# 脚本任务 SSIS - 使用动态列将 SQL Proc 的结果导出到 Excel

Python如何批量修改替换Excel Power Query里面的SQL脚本

《懒人Shell脚本》之六——一键构造待采集批量sql语句

从 Excel / CSV 批量插入到 SQL Server