2016-10-30 4 views
0

mysqlimport를 사용하여 csv 파일을 처리합니다. mysqlimport는 누락 된 행을 유지합니다.

내가 사용하는 명령입니다 : 나는 과정을 시작

mysqlimport --ignore-lines=1 --fields-terminated-by=, --columns=$COLUMNS --lines-terminated-by="\n" \ 
     --verbose --local --fields-enclosed-by='"' --host=$HOST --port=$PORT \ 
     --user=$USERNAME --password=$PASSWORD ${DATABASE} $FILE_PATH 

전에, 나는 테이블을 절단하며 고유 인덱스가 없습니다.

원본 파일에는 7288362 개의 레코드가 있습니다 (처음에는 csv 행에 줄 바꿈 문자가 포함될 수 있다고 생각했는데 검사를했으나 fileds에 줄 바꿈 문자는 없었습니다).

그러나 mysqlimport가 완료되면 "기록 : 7288300 삭제됨 : 0 건너 뛰기 : 0 경고 : 43730142"라고 표시됩니다.

나는 그것도 나에게 7288300.

어떤 아이디어를 준, MySQL의에 로그인을 MyTable에서 SELECT COUNT (*)를했을 때?

감사합니다.

+0

행당 약 6 개의 경고를 받는다는 사실은 붉은 깃발입니다. 필드에 비해 너무 긴 문자열을로드하고 있거나 파일에 잘못된 날짜 문자열이 있거나 그와 유사한 내용이있을 수 있습니다. 난 당신의 파일에서 단지 첫 번째 줄의 복사본을 만들고 테이블의 복사본으로 가져올려고. 그런 다음 표의 선과 데이터를보고 차이점을 확인하십시오. –

+0

코멘트 주셔서 감사합니다! 실제로 나는 그것이이 종류의 선들에 의해 야기되었다는 것을 발견했습니다 - 1345235,62, "Theme From \ Shaft \" "" "" ",, Chris Davis & Kim Waters ,,,,, 5,0 ,,,,,, ,,,,, 2016-10-28 ,,,, 2016-10-28,, Y ,,,,,, 0,2016-10-28 09:09:39. 보시다시피, 여러 개의 큰 따옴표가 있고 제대로 이스케이프 처리되지 않았습니다. 어떤 생각이 있습니까? – milodky

답변

0

은 내 CSV 파일의 행이 종류가 있습니다 거기에

1345235,62,"Theme From \Shaft\""""",,Chris Davis & Kim Waters,,,,,,5,0,,,,,,,,,,2016-10-28,,,,2016-10-28,,Y,,,,,,0,‌​2016-10-28 09:09:39 

멀티 따옴표 문제가 발생합니다. --fields-escaped-by=''을 추가하면 제대로 작동합니다.

+0

당신은 아마 당신의 데이터베이스에 여분의 \와 "문자를 가지고 있습니다. 당신의 CSV 데이터 파일을 가져 오기 전에 수정하는 것이 좋습니다. –

+0

저는 mysql을 처음 사용했지만 CSV 파일을 만들 때 사용한 소스는 테마입니다 \ Shaft \ ""이고 MySQL의 값은 The \ From \ Shaft \ ""입니다. 그들은 동일하게 보입니다. – milodky

+0

그러면 데이터베이스에서 원하는 것이면 모두 좋습니다. –