2009-12-29 14 views
0

그래서 저는 사용자가 CSV 파일을 MySQL로 가져올 수 있어야하는 PHP 프로젝트를 진행하고 있습니다. CSV 파일에 고유 한 ID가있는 '열'이 포함되어 있습니다. 중복 된 항목이 있습니다. 여기서 까다로운 부분이 나오는 곳입니다 ... 중복 된 테이블은 메인 테이블이 아닌 별도의 테이블에 있어야합니다.PHP, MySQL CSV 가져 오기 - 어떻게 하시겠습니까?

이 작업을 수행하는 코드를 작성했지만보다 효율적인 방법이 있어야합니다 ... 지금 스크립트는 CSV를 읽고 각 행에 대해 ID가 이미 존재하는지 확인하기 위해 db를 쿼리 한 다음 넣습니다. 적절한 테이블에. 이 CSV 파일에는 각각 50k + 행이 포함되어 있으므로 시간이 많이 걸립니다.

아이디어가 우수 할 것입니다. 감사합니다.

+2

조언은 마지막으로 요청한 시간과 동일합니다. http://stackoverflow.com/questions/1965001/mysql-duplicates-with-load-data-infile –

답변

2

CSV를 MySQL에 대량로드 한 다음 GROUP BY id HAVING COUNT(id) > 1과 함께 쿼리를 실행하고 해당 행을 꺼냅니다.

0

MySQL의 테이블이 중복 값을 허용하지 않도록 설정되어 있는지 확인합니다 ID 열에 대해, 다음 다음을 수행하십시오 ID는

  • 시험에게 수익을 존재하지 않는 것처럼

    1. INSERT 문을 실행 . ID가 이미
    2. 을 존재하는 경우 테스트가 실패하면 레코드의 98 %가되지 중복이 경우는 두 번째 테이블에

    이 방법을 기록을 넣어 새로운 INSERT 문을 실행하면 실패합니다 속도 저하는 보이지 않을 것이며, 단지 몇 개의 중복 만이 여분의 테스트를 실행할 것입니다.

  • 관련 문제