2012-06-02 2 views
0

2 개의 다른 서버에서 2 개의 테이블을 연결해야합니다.연결된 서버가있는 두 테이블을 연결하는 방법

C#에서 어떻게 할 수 있습니까?

이것은 내가 지금까지 무엇을 가지고 : 그들 모두

cmd = new MySqlCommand(String.Format("INSERT INTO {0} (a,b,c,d) SELECT (a,b,c,d) FROM {1}", ConfigSettings.ReadSetting("main_table"), ConfigSettings.ReadSetting("main_table")), con); 

ConfigSettings.ReadSetting("main_table")가 동일합니다.

con.ConnectionString = ConfigurationManager.ConnectionStrings["con1"].ConnectionString; 
con2.ConnectionString = ConfigurationManager.ConnectionStrings["con2"].ConnectionString 

이 cmd를 두 개의 다른 연결 문자열 및 테이블과 동일한 이름으로 작업하는 방법. 테이블 이름이 변경되어 config에 저장됩니다.

+0

지금 솔루션에 어떤 문제가 있습니까? – Quassnoi

+0

로컬 데이터베이스에서 읽고 원격 데이터베이스에 삽입하려는 경우 연결 문자열 2 개가있는 명령 줄 쿼리를 넣어야합니다. 둘 다 동일한 열 이름으로 동일합니다. –

+0

[2 개의 연결 문자열로 2 개의 mysql 테이블을 연결하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/10854191/how-to-connect-2-mysql-tables-with-2-connection-string) – Quassnoi

답변

1

MySQL은 서버를 동적으로 연결할 수 없습니다.

당신이 데이터베이스 사이의 직접 사본을 원하는 경우,이 명령 원본 서버를 가리 할 대상 서버에 FEDERATED 테이블을 만들어야합니다, 그냥 발행 것 : 대상에

INSERT 
INTO main_table (a, b, c, d) 
SELECT a, b, c, d 
FROM federated_main_table 

을 섬기는 사람.

원본 서버 및/또는 테이블이 여러 개있는 경우 각각에 대해 페더 레이 티드 테이블을 만들어야합니다.

다른 옵션은 원본 서버에서 클라이언트 (배열, 영구 레코드 세트 등)로 모든 데이터를 선택한 다음 클라이언트에 캐시 된 데이터를 대상 서버의 테이블에 삽입하는 것입니다.

+0

너 나 혼란 스러울거야. 내 연결 stringa와 cmd에 예제를 줄 수 있겠습니까? –

+0

@denonth : 아니요, 할 수 없습니다. 하나의 명령으로이 작업을 수행하는 것은 불가능합니다. 당신은 두 개의 연결 문자열과 두 개의 명령이 필요합니다 :'SELECT ... FROM source'와'INSERT ... INTO target ... ' – Quassnoi

+0

로컬 federatet 데이터베이스가 필요하므로 선택하고 나서 뭐? 원격 서버에 페더레이션 된 결과 –

관련 문제