ExcelからSql Server 2008へのスクリプトタスク一括コピー。行がありません。

excel excel-2007 sqlbulkcopy sql-server ssis

質問

私は現在、SQLサーバーのテーブルへのヘッダーを持つExcelワークシートからデータをロードしています。 SSISでスクリプトタスクを使用しています。ヘッダーの後の最初の行がロードされない点を除いて、すべてが正常に動作しています。行をワークシートの一番下に移動すると、正しくロードされます。 何か案は?

使用しているコードは次のとおりです。

データソース= "+ fullPath +";拡張プロパティ= \ "Excel 12.0; HDR = YES; IMEX = 1 \" "; string = excelconnectionstring =" Provider = Microsoft.ACE.OLEDB.12.0;

OleDbConnection oledbconn =新しいOleDbConnection(excelconnectionstring); Dts.Variables ["User :: FileLoaded"]。値= 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;
        }

受け入れられた回答

それで私は、私が採用していた方法を変えることでこれを解決しました。今はすべてが完璧に動作します。

代わりに、次のようにデータアダプタを使用しました。以前のコードが正しく動作しなかった理由はまだ分かりません

OleDbDataAdapterアダプタ=新しいOleDbDataAdapter(exceldataquery、oledbconn); adapter.Fill(dataTable);

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

            bulkcopy.WriteToServer(dataTable);


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ