1

Excel シートのデータを DataSet に入力しています。このデータを、同じ構造を持つ Access データベースのテーブルに挿入する必要があります。

慣習により、DataTable の行を反復処理し、それぞれに対して INSERT クエリを作成するように指示されますが、これを達成するためのより効率的な方法があるかどうか疑問に思っていましたか? おそらく、SQL Server の SqlBulkCopy に似たものでしょうか?

これが私がこれまでに持っているコードです:

    Dim connection As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath(path) & ";Extended Properties=Excel 12.0;")
    Dim adapter = New OleDbDataAdapter("SELECT * FROM [Sheet1$] WHERE EmpID IS NOT NULL", connection)
    Dim results = New System.Data.DataSet
    connection.Open()
    adapter.Fill(results)
    connection.Close()
    connection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("~/App_Data/Leaves.accdb"))
    `Now, short of a loop, how can I insert results.Tables(0) into my database?

ご協力いただきありがとうございます。

4

1 に答える 1

1

たとえば、次のように ADO を使用できます。

INSERT INTO Table1 ( ADate ) 
SELECT SomeDate FROM [Excel 8.0;HDR=YES;DATABASE=Z:\Docs\Test.xls].[Sheet1$a1:a4]

Access データベースへの接続先。シート全体を使用する場合は、[Sheet1$] をテーブルとして参照します。名前付き範囲を使用する場合は、名前で参照してください。

于 2012-10-28T12:01:40.653 に答える