2013-02-13 2 views
1

CSV 파일에서 데이터를로드하려고하는데 소수의 날짜 필드 열에 CSV의 데이터가 유효하지 않습니다. 하지만 LOAD DATA INFILE 문을 실행할 때 NULL 값을 해당 열에 삽입합니다. 어떻게하면 잘못된 데이터가있는 전체 행을 건너 뛸 수 있습니까?csv에서 데이터를로드하는 동안 LOAD DATA INFILE에서 잘못된 데이터 행을 무시하거나 건너 뛰는 방법.

+0

무슨 뜻입니까? 유효하지 않습니까? 유효하지 않은 데이터가있는 경우 LOAD DATA INFILE은 작동을 멈 춥니 다. 하지만 당신의 경우에는 계속 작동하며 NULL을 삽입합니다. 예제를 보여주세요. – Devart

+1

예, NULL을 삽입하지만 NULL 대신, 유효하지 않은 레코드 삽입 (예 : 문자열 데이터가 datetime 필드에 삽입되는 데이터베이스의 데이터 유형과 일치하지 않는 데이터)을 건너 뛰고 싶습니다. – vishal

답변

2

파일에서로드 기능을 사용하는 경우 해당 행을 건너 뛸 수 없습니다. 먼저 모든 데이터를 임시 테이블에로드 한 다음 해당 테이블에서 유효한 행만 준비 테이블로 가져옵니다. 준비 테이블에 모든 행을 삽입하면 해당 임시 테이블을 삭제하십시오!

+1

IGNORE LINES를 사용한다는 의미입니까? 사실, 물어보고 싶었습니다. 줄 번호를 지정하지 않아도됩니다. MySQL에 무효 인 행을 인식하고 건너 뛸 수있는 LOAD DATA INFILE이 있습니까? – vishal

+0

아니요, 무시 선에 대해 말하는 것이 아닙니다. 행은 고정되어 있지 않으므로 무시 선은 사용할 수 없습니다. 그 목적을 달성 할 수있는로드 infile 함수에는 그러한 메소드가 없습니다. 내 대답에서 제안한 것을 사용하는 것이 더 낫다. –

+0

고마워요.하지만 임시 테이블에 데이터를로드 할 때 NULL 값이 삽입되므로 유효하지 않은 데이터로 인해 어떤 NULL 값을 인식 할 수 없습니까? – vishal

0

csv 파일을 통해 데이터를로드 할 때. 날짜는 yyyy-mm-dd HH : MM : SS 형식이어야합니다. 그렇지 않으면 NULL 값을 삽입합니다 .. csv 파일 날짜 전체 열을 선택하고 마우스 오른쪽 단추로 클릭하십시오. 형식 셀을 클릭하고 오른쪽에서 '날짜'열을 선택하고 '사용자 지정'을 선택하십시오. 'yyyy/mm/dd'형식을 'yyyy-mm-dd HH : MM : SS'로 변경하십시오. csv 파일의 왼쪽 상단에있는 포맷 페인터를 사용하여 모든 날짜 열에 대해 동일한 작업을 수행하십시오. 이게 내가 생각하는 문제를 해결해 줄거야.

0

테이블을 만들 때 날짜 열의 NOT NULL을 사용하여 잘못된 날짜를 건너 뛸 수 있습니다.