2012-10-28 6 views
1

엑셀 시트의 데이터로 DataSet을 채우고 있습니다. 이제는이 데이터를 동일한 구조를 가진 Access 데이터베이스의 테이블에 삽입해야합니다.DataTable to .accdb 데이터베이스

Convention은 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? 

감사 : 여기

내가 지금까지 가지고있는 코드입니다.

+0

Excel 테이블에서 Access 테이블로 바로 복사 할 수 있습니다. 나는 네가 그렇게하기를 제안한다. – Fionnuala

+0

@Remou 어떻게해야합니까? (Interop은 여러 가지 이유로 사용할 수 없습니다.) –

답변

1

당신은 예를 들어, ADO를 사용할 수 있습니다

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

를 연결이 Access 데이터베이스입니다. 전체 시트를 사용하려면 명명 된 범위를 사용하려면 [Sheet1 $]을 테이블로 참조하십시오. 이름으로 참조하십시오.

+0

Perfect, thanks! –