2012-10-01 3 views
0

나는 CSV를 MySQL로 가져 왔고 첫 번째 중복 엔트리 오류가 발생한 후에 MySQL로 가져 오기 전에 중복을 확인하는 몇 가지 기능을 찾고있다.ColdFusion에서 MySQL로 가져올 때 MySQL에서 중복 항목을 확인하는 방법은 무엇입니까?

나는 Coldfusion8, MySQL5.0.88을 실행 중입니다.

내 가져 오기는 먼저 기본 데이터베이스로 커밋하기 전에 중간 테이블 (import_pricat_csv)로 이동합니다. 중간 테이블 내가 지금처럼 내 모든 수입 유효성 검사를하고있어 충전하는 경우 :이 데이터베이스에 최선을 다하고되고되기 전에

<cfquery datasource="db"> 
    UPDATE import_pricat_csv 
    SET error= "true", errorMsg= "invalid EAN" 
    WHERE iln = <cfqueryparam value = "#Session.loginID#" cfsqltype="cf_sql_varchar" maxlength="13"> 
    AND error= "no" 
    AND (ean is null OR NOT (ean REGEXP '[0-9]{13}' OR ean REGEXP '[0-9]{12}')) 
</cfquery> 

이 오류에 대한 import_pricat을 확인합니다. 나는 INSERT IGNORE을 MySQL에 넣을 수 있지만 가져 오기 오류 보고서를 만들려면이 작업을 수행해야합니다.

ean이 실제 데이터베이스 테이블 products에 이미 있는지 확인하는 규칙을 추가해야합니다.

나는이 노력하고있어,하지만 작동하지 않습니다 내가 잘못 뭘하는지

<cfquery datasource="db"> 
    UPDATE import_pricat_csv 
    SET error= "yes", errorMsg= "duplicate EAN" 
    WHERE iln = <cfqueryparam value = "#Session.loginID#" cfsqltype="cf_sql_varchar" maxlength="13"> 
     AND error= "no" 
     AND ean IN (SELECT p.ean FROM products AS p WHERE p.ean = ean) 
</cfquery> 

어떤 생각을?

감사합니다.

답변

4

저는 개인적으로 LOAD DATA FROM FILE을 사용하여 CSV 데이터를 임시 (동일한) 테이블로 가져옵니다. 그런 다음이 임시 테이블의 모든 새 데이터를 사용하여이 값에 대해 쿼리하고 "마스터"와 비교하여 값이 존재하는지 확인합니다.

CSV 파일이 올바르게 포맷되지 않은 경우 임시 테이블에 데이터를 가져올 수 없다는 점을 기억하십시오. 그러나 더 빨리 CSV 파일을 가져 오는 방법이 될 것입니다.

+0

cool. 감사! 나는 이것을 시도하고 그것이 어디서 왔는지를 알 것입니다. – frequent

+1

Re : * 아무 것도 데이터를 임시 테이블에 가져올 수 없습니다. * 또한'varchar' 열을 사용할 수도 있습니다. 그런 다음 가져온 후 몇 가지 쿼리를 사용하여 유효성을 검사합니다. 또한 임시 테이블을 사용하는 한'cfloop'을 건너 뛰고'JOIN'을 사용하여 삽입/업데이트를 수행 할 수 있습니다. – Leigh

관련 문제