【解決方法】SQLBulkCopy


やあ、

以下のコードを使用して、ExcelファイルからSQLテーブルにデータをインポートしようとしています

C++
public void ImportData()
{
    // Connection String to Excel Workbook
    string excelConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\stagingserver\abc\UPLOAD\MyFile.xls;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1""";
    OleDbConnection xlConn = new OleDbConnection(excelConnectionString);
    OleDbCommand xlCommand = new OleDbCommand("select col1, col2 from [Sheet1$]", xlConn);
    xlConn.Open();

    using(DbDataReader dr = xlCommand.ExecuteReader())
    {
        using(SqlBulkCopy copyData = new SqlBulkCopy(MYConnectionString))
        {
            copyData.DestinationTableName = "MY_TABLE";
            copyData.WriteToServer(dr);

            copyData.Close();
        }
        dr.Close();
        dr.Dispose();
    }
    xlCommand.Dispose();
    xlConn.Close();
    xlConn.Dispose();
}

. これは私のローカルシステムからはうまくいきます。 サーバーから同じことを試みても、行は挿入されません。 エラーもありません…任意の考えをいただければ幸いです。

解決策 1

DTS パッケージを使用している場合は、ソースの Excel ファイルのファイル名を確認することをお勧めします。 ファイルはローカルに存在する可能性がありますが、サーバー上には存在しません。

幸運を!

解決策 2

EF に同意します インポート ファイルとフォーマット ファイルのパスを確認します (使用されている場合)。 ほとんどの場合、ローカルでは機能するがリモートでは機能しないものは、

A. パス
B. 接続文字列。
C. 権限。

サーバーにエラーがないということですか? サーバーログを確認することをお勧めします。

コマンドラインまたはコードでこれを行っていますか? コードに例外がなく、コマンド ラインで表示されないということですか?

コメント

タイトルとURLをコピーしました