2011-12-07 2 views
2

MySQL에서 파일을로드합니다. 각 파일은 다음을 포함합니다 :MySQL에로드 된 소스 파일을 추적하는 방법?

Date ShopNumber subject price quantity total 

파일 1 :

01/01/2011 Mexico Book1 $10 2 $20 
01/01/2011 Mexico Book2 $10 2 $20 
01/01/2011 Mexico Book3 $10 2 $20 
............................... 

파일 2 :

01/01/2011 Mexico Book4 $10 2 $20 
01/01/2011 Mexico Book1 $10 1 $10 
............................... 

MySQL의 테이블에서 :

01/01/2011 Mexico Book1 $10 3 $30 
01/01/2011 Mexico Book2 $10 2 $20 
01/01/2011 Mexico Book3 $10 2 $20 
01/01/2011 Mexico Book4 $10 2 $20 
............................... 

문제는 : 나는 소스 파일을 추적하고 난의 고유 키에 소스 파일을 포함 할 수 없습니다 테이블 - 합계 만 유지하면됩니다. 중복은 거의 없습니다. 가능한 중복 될 수있는 다른 테이블을 추가 할 수 있습니까? 감사.

+0

무엇이 문제인지 명확하지 않습니다. 가져 오기에서 중복을 병합하는 방법은 무엇입니까? 또는 병합 된 값이 실제로 가져올 때 특정 행에서 병합되었다는 정보를 기록하는 방법은 무엇입니까? – newtover

+0

아니요, Book1 (.. n)이 제공 한 파일을 알아야합니다. – user710818

+0

그리고 어떻게로드합니까? LOAD DATA INFILE 사용? – newtover

답변

1

내 응용 프로그램에는 functionaly 가져 오기가 포함되어 있으며 여기서 MySQL로 데이터를로드하고 정보를 추적하는 문제를 해결합니다. 사용자가 응용 프로그램을 다시 포맷 그것을 탭으로 구분에 파일 업로드

  • 유효한 임시 파일
  • 파일 및 수입에 대한 몇 가지 다른 메타 정보의 이름 uft8은-인코딩에 응용 프로그램 삽입 별도의 테이블 import_infoupdate_id이 오면,
  • 다음 응용 프로그램이 파일에서 온 LOAD DATA INFILE는 파일의 경로를 통과되는 쿼리와 update_id (attr1, attr2attr3 사용하여 파일에서 데이터를로드 해당 ID (update_id를) 검색 p로부터 쿼리에 arameter)

    LOAD DATA LOCAL INFILE %(file_path)s 
    INTO TABLE importdata 
    CHARACTER SET 'utf8' 
    (attr1, att2, att3, update_id) 
    SET update_id = %(update_id)s; 
    
  • 내 경우에 importdata 테이블은 데이터를 가져온 후 응용 프로그램이 다른 테이블에 병합 중복을 허용한다. 병합에 성공하면 importdata 테이블에서 가져온 데이터를 제거합니다.

관련 문제