2009-10-07 6 views
0

실용적인 Access 데이터베이스 백업을 원합니다. 그리고 백업에있는 모든 데이터를 가져 와서 원본 데이터베이스에서 데이터를 삭제하고 싶습니다. (쿼리 및 응용 프로그램을 통해 필터링하면서 많은 시간을 소요하지 않도록.) 한 데이터베이스에서 다른 데이터베이스 테이블로 데이터 전달

소스 데이터베이스 이름이 Data.mdb 인 대상 데이터베이스 이름은 모두가 동일한 암호로 보호되어 Backup.mdb 입니다.

이러한 목적으로 나는 C#에서 이와 같은 쿼리를 작성하고 있습니다.

string conString = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=Backup.mdb;Jet  
        OLEDB:Database Password=12345"; 
OleDbConnection dbconn = new OleDbConnection(); 
OleDbDataAdapter dAdapter = new OleDbDataAdapter(); 
OleDbCommand dbcommand = new OleDbCommand(); 

try 
{ 
    if (dbconn.State == ConnectionState.Closed) 
     dbconn.Open(); 

string selQuery = "INSERT INTO [Bill_Master] SELECT * FROM [MS Access;DATABASE="+  
        "\\Data.mdb" + "; Jet OLEDB:Database Password=12345;].[Bill_Master]"; 

dbcommand.CommandText = selQuery; 
dbcommand.CommandType = CommandType.Text; 
dbcommand.Connection = dbconn; 
int result = dbcommand.ExecuteNonQuery(); 
} 
catch(Exception ex) {} 

암호 데이터베이스 파일없이 사용해도 문제가 없습니다. 쿼리 문에 암호를 전달하는 중 오류가 발생한다고 생각합니다. 액세스 쿼리를 통해 실행하려고하지만 "잘못된 인수"를 말하고 있습니다. 그 일을하기위한 다른 프로그래밍 논리가 있습니까? 감사

prashant YuvaDeveloper

답변

3

있습니다 Data.mdb 및 Backup.mdb 동일 strcuture에서? 그렇다면 SQL을 통해 데이터를 복사하는 것을 신경 쓰지 않고 전체 파일을 복사하십시오.

+0

나중에하지만 내가 말했듯이 나는 소스 파일에서 모든 데이터를 삭제합니다. 앞으로도 내 소스 파일에 새 데이터를 채우고 다시 복사하여 붙여 넣기 만하면됩니다. 그러면 backup.mdb 파일에있는 데이터가 손실됩니다. 감사합니다 – prashant

+0

그런 다음 원본을 백업 파일 이름으로 복사 한 다음 원본의 모든 데이터를 지 웁니다. 작동하지 않는 이유가 있습니까? 확실히 맥시 밀리언이 제안한 것입니다. –

1

Data.mdb를 복사하고 이름을 바꾼 다음 Data.mdb의 모든 테이블을자를 수 있습니다. 한 번에 표를 복사하는 것보다 훨씬 쉽습니다.

+0

실제로 현재 데이터베이스에 일부 데이터가 유지되어야합니다. 그게 내가 왜 그냥 테이블 데이터의 일부를 백업으로 옮기는거야. – prashant

+0

Data.Mdb Backup.Mdb == 데이터 1 == 데이터 2 === 데이터 3 ---------> === 데이터 1 === 데이터 2가 ===이 을 DATA3 이동 - ------------------------------------------ 데이터에 새 데이터를 다시 추가하십시오. MDB === DATA4 === data5 이 ------> === 데이터 1을 이동 === 데이터 2 === 데이터 3 === DATA4 ==== data5 이있다. 내 데이터베이스에 추가해야합니다 – prashant

1

데이터를 삭제하지 마십시오. 이것은 분석이나 질의를하기에 미래에 많은 어려움이됩니다. 오랜 시간이 걸리는 경우 SQL Server에 대한 인덱싱 또는 업 사이징을 검토하십시오. Express Edition은 무료이며 최대 4GB의 데이터베이스를 처리 할 수 ​​있습니다.

+0

괜찮습니다. 나는 데이터를 삭제하지 않을 것이다. 하지만 어떻게 다른 테이블에서 값을 삽입합니다. 내 검색어로해야 할 내용 문자열 selQuery = "INSERT INTO [Bill_Master] SELECT * FROM [MS 액세스, DATABASE ="+ "\\ Data.mdb"+ "; Jet OLEDB : 데이터베이스 암호 = 12345; [Bill_Master] "; – prashant

+0

STRSQL = "ServiceRecordInvoices INTO 삽입"_ "(sriID, sriServiceRecordID, sriInvoiceDate, sriInvoiceNumber, sriDescription, sriInvoiceAmount)"& _ 'IN' "및 strDatabasePathandName &" ' "& _ "SELECT srpID, srpServiceRecordID, srpInvoiceDate, "strDatabasePathandName & "';" 여기서 strDatabasePathandName은 데이터베이스 경로 및 이름입니다. 음, 암호가 있습니까? 위와 같이 작동하는지 모르겠습니다. –

2

그래서 형식이 될 것 ;Jet ... 사이의 공간을 제거하십시오 : 그 동일한

INSERT INTO [Bill_Master] SELECT * FROM [MS Access;DATABASE="+  
       "\\Data.mdb" + ";Jet OLEDB:Database Password=12345;].[Bill_Master] 
관련 문제