2011-02-11 3 views

답변

1

로 MySQL의 문서 팀의 구성원에 의해 here 진술 :

It's not atomic. The records loaded prior to the error will be in the 
table. 

일이 arround를 전용 테이블에 데이터를 가져온 다음 원자 작동 될 것입니다 INSERT INTO ... SELECT ...을 실행하는 것입니다. 거대한 데이터 세트에서 이것은 긴 트랜잭션 때문에 잠재적 인 문제입니다.

+0

이것은 거래를 지원하지 않는 MyISAM 테이블에 적용된다는 점에 유의하십시오. InnoDB는 최소한 LOAD DATA ...를 트랜잭션으로 취급합니다. – nos

1

MySQL manual은 MySqlBulkLoader가 'LOAD DATA INFILE'래퍼임을 나타냅니다. 당신이 무시 건너 뜁니다 고유 키 값을 기존 행을 복제 입력 행을 지정하는 경우

다음 'LOAD DATA INFILE'문서를 보면서 나는이 단락을 발견했습니다. 두 옵션 중 하나를 지정하지 않으면 동작은 LOCAL 키워드 이 지정되었는지 여부에 따라 달라집니다. LOCAL을 사용하지 않으면 중복 키 값이 인 경우 오류가 발생하고 나머지 텍스트 파일 은 무시됩니다. LOCAL의 경우 기본값 인 은 IGNORE가 인 경우와 동일합니다. 서버 은 작업 중간에 파일의 전송을 중지 할 수 없기 때문입니다.

나는 거래에 대해 아무런 논의도 찾지 못했지만 위의 문단은 거래가 불가능하다는 것을 나타냅니다.

데이터를 가져 오기 테이블로 가져온 다음 별도의 저장 프로 시저를 사용하여 원하는 테이블로 트랜잭션을 사용하여 데이터를 처리하는 것이 좋습니다.

그래서 ANSW

관련 문제