2010-07-06 10 views
0

글쎄, 내가 이미 해본 - 나는 Microsoft.Jet.OLEDB 공급자를 통해 mdb 테이블에 액세스 할 수있다. 그런 다음 select 쿼리, OleDbDataAdapter 및 DataSet을 사용하여 테이블에서 데이터를 가져올 수있다.mdb에서 데이터를 가져 와서 postgresql 테이블에 넣는 방법, Visual C#?

이제 Npgsql을 통해 PostgreSQL에 연결할 수 있습니다.하지만 나를 벗어나는 이유는 어떻게 액세스 테이블에서 데이터를 가져 와서 postgresql 테이블에 넣을 수 있습니까?

내가 원하는 것은 - 액세스 mdb 테이블에서 데이터를 가져 와서 "select into"쿼리를 사용하여 postgresql 테이블에 삽입하는 것입니다.

+0

내가 포스트그레스 SQL에 대해 아무것도 몰라,하지만 액세스와 MySQL과 함께, 당신은 ODBC를 사용할 수는있다과 해결책 그게 당신에게 어떤 사용 http://stackoverflow.com/questions/442915/what-is-the-best-way-to-synchronize-data-between-ms-access-and-mysql/443003#443003? – Fionnuala

+0

@Remou : 글쎄, 좋은 해결책이긴하지만, 내가 아는 한 - 액세스 데이터베이스 아래에서 작동한다. 내가 원했던 것은 - 외부 프로그램으로, 비주얼 C#으로 작성되었으며, 엑세스 테이블의 데이터를 취한 다음 MSAccess 자체를 사용하지 않고 postgresql 테이블에 저장합니다. 아마도 내가 어떻게 든 ODBC를 액세스 및 postgresql과 함께 사용할 수 있습니까? – MindLezz

+0

예, 가능해야합니다. 링크는 두 개의 다른 데이터베이스를 참조하는 예일뿐입니다. C# – Fionnuala

답변

1

두 데이터베이스가 서로 다른 엔진에 있으므로이 인스턴스에서 한 데이터베이스에서 다른 데이터베이스로 "SELECT INTO"쿼리를 사용할 수 없을 것이라고 생각합니다. MDB에서 데이터를 일부 CLR 개체로 저장 한 다음 CLR 데이터를 PostgreSQL 데이터베이스로 읽는 것은 매우 간단합니다. 원하는대로 할 수 없습니다.

+0

에 대한 몇 가지 메모를 찾을 수 있습니다. CLR 개체에 대해 조언을 해 주시겠습니까? 글쎄, 이론적으로, 나는 중개자를 사용하여 액세스 테이블의 데이터를 저장 한 다음 해당 데이터를 postgresql 테이블에 저장해야한다는 것을 알고 있습니다. 그러나 나는 그것을 어떻게 만드는지 전혀 모른다. – MindLezz

+0

@MindLezz : 테이블의 모든 열에 대해 속성을 가진 클래스를 만듭니다. 각 행은 객체입니다. Hibernate, LINQ to SQL 또는 Entity Framework와 같은 ORM을 사용하여 테이블을 객체에 매핑 할 수 있습니다. –

+0

고맙습니다. 시도해 보겠습니다.) – MindLezz

0

다음은 매우 유용한 아마언트 노트입니다. postgressql에 액세스 할 수 없기 때문에 SQL Server Express를 참조합니다. SQL 서버 테이블을 Access에 연결하고 연결 속성을 확인하여 연결 문자열을 얻었지만, 여기를 볼 수도 있습니다 : http://www.connectionstrings.com/postgre-sql. 두 줄은 SQL Express에서 table1의 값을 table2의 Access에 삽입합니다. Access에서는 쿼리가 올바르지 않으면 경고없이 실패합니다 (이 경우 Access 2010). 나는 Visual C# 2010 Express에서 이것을 시도했다.

//create the database connection 
OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\docs\\db.mdb"); 

//create the command object and store the sql query 
OleDbCommand aCommand = new OleDbCommand("INSERT into [ODBC;Description=TEST;DRIVER=SQL Server;SERVER=COMP\\SQLEXPRESS;Trusted_Connection=Yes;DATABASE=test].Table2 (id, atext) select id, atext from table1", aConnection); 
0

안녕하세요, 저를 도와 주신 모든 분들께 감사드립니다. 마침내 알아 냈습니다. 그래서, 같은 상황이 발생할 모든 사람들을 위해 - 여기 PostgreSQL을위한 올바른 연결 문자열 :

//create the database connection 
OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\docs\\db.mdb"); 

//create the command object and store the sql query 
OleDbCommand aCommand = new OleDbCommand("INSERT into [ODBC;DSN=PostgreSQL;DATABASE=postgres;SERVER=localhost;PORT=5432;UID=postgres;PWD=test;].Table2 (id, atext) select id, atext from table1", aConnection); 
관련 문제