脚本任务批量复制从Excel到Sql Server 2008.缺少行

时间:2015-06-26 14:25:44

标签: sql-server excel ssis excel-2007 sqlbulkcopy

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

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

string excelconnectionstring =" Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" + fullPath +&#34 ;;扩展属性= \" Excel 12.0; HDR = YES; IMEX = 1 \"&#34 ;;

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 个答案:

答案 0 :(得分:0)

好的,所以我通过改变我使用的方法解决了这个问题。现在一切都很完美。

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

OleDbDataAdapter adapter = new OleDbDataAdapter(exceldataquery,oledbconn);                 adapter.Fill(dataTable中);

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

            bulkcopy.WriteToServer(dataTable);