2013-12-09 2 views
0

도움이 될만한 정보 : 나는 학생 (성, 성, 이메일 등)에 관한 연락처 정보를 보유하고있는 MySQL 데이터베이스를 가지고 있습니다.수천 개의 레코드가 MySQL에 존재하는지 확인하십시오.

때때로 나는 업데이트 된 연락처 정보가있는 CSV 파일을 받게됩니다.

일부 정책으로 인해 변경할 가능성이없는 유일한 정보는 전자 메일 주소이므로 MySQL 및 csv 파일에는 전자 메일 주소가 공통적으로 포함됩니다 (새 항목이없는 경우).

필요한 항목 : 내가해야할 일은 csv 파일 (5000 레코드)의 전자 메일 주소가 MySQL 데이터베이스 (200000 레코드)에 있는지 확인하는 방법을 찾는 것입니다.

이 작업을 수행하는 작은 python 프로그램을 작성했지만 각 이메일 주소 (200000 개의 레코드 테이블에서 5000 개의 쿼리를 의미)에 대해 SQL 쿼리를 수행해야하기 때문에 시간이 오래 걸립니다. 때로는 연결이 .. 실행의 긴 시간으로 인해 손실

실제 질문 :

가 어떻게 성능을 긴 시간을 방지하고 개선하기 위해 데이터베이스를 쿼리해야 ?

감사

나는 권합니다

답변

0

:

  • MySQL 서버의 테이블에 대량로드 이메일 CSV는
  • 귀하의 이메일 CSV 테이블 기존 &을 사이에 LEFT 가입 요청을 수행 (FILE 권한이 필요) DB를 사용하여 어떤 이메일이 존재하는지 확인하십시오.
0

당신은 단계와 SQL

예를 들어, 아래에 사용할 수 있습니다

table1 : @dweeves로 csv 데이터 테이블이 제안되었습니다.

표 2 : 당신의 MySQL의 테이블

일치

타의 추종을 불허하는

SELECT table1.email FROM table1 INNER JOIN table2 ON table1.email = table2.email 

:

SELECT table1.email FROM table1 LEFT JOIN table2 ON table1.email = table2.email 

WHERE table2.email IS NULL 
0

당신은 목록에 모든 CSV 데이터를 읽고 MySQL의 리더를 열 수 있습니다. 목록을 mysql의 데이터와 비교하십시오.

또는 목록에 저장하지 않으려면 한 줄씩 읽고 파일을 읽는 동안 그것을 mysql과 비교하십시오.

관련 문제