개발/CS

[DB] MySQL load data infile 에러 - Error Code: 1262 , Error Code: 1300, Error Code: 2013 해결 방법

zz132456zz 2022. 3. 21. 20:50
728x90

제목에 있는 3개의 Error Code는 공공데이터를 이용해서 서울의 상권정보를 csv파일로 아래와 같이 load data infile을 해서 db에 넣으려고 할 때 생긴 에러들이다.

load data infile 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\"txt or csv 파일명"' 
into table "테이블명" character set utf8mb4 
fields terminated by '구분자'
lines terminated by '\r\n' 
ignore 1 rows;

 

각각 에러들에 대한 간단한 한 줄 설명을 적을 테니 자신에게 해당되는 내용이면 바로 고쳐보고 그래도 안되면 상세 설명도 읽으면 도움이 될 수도 있을 것이다.

1. Error Code: 1262. row 110 was truncated; it contained more data than there were input columns

*한 줄 설명 - 데이터 중에 구분자를 포함한 데이터가 있을 수 있다. 구분자를 바꿔보자

 

먼저 csv파일로 하고 구분자를 , (콤마)로 주었더니 데이터중에 콤마가 들어간 데이터가 있어서 의도한 열의 수보다 1개가 더 많게 읽혀서 에러가 난 것이니 구분자를 다른 것으로 바꿔줘야 한다. 

나는 csv파일의 다른 이름으로 저장에 txt 파일(구분자 tab)이 있어서 그걸로 바꿔주었다.

 

 

2. Error Code 1300. invalid utf8mb4 character string ''

*한 줄 설명 - 파일의 인코딩 방식이 utf-8인지 확인하자. 아니면 utf-8로 만들어주자.

 

txt 파일로 바꿔주고 다시 실행하니 위와 같은 에러가 발생했는데 이는 csv파일에서 txt 파일로 저장할 때 utf-8이 아닌 다른 인코딩 방식으로 저장되어서 txt 파일을 다시 다른 이름으로 저장해서 인코딩 방식을 utf-8로 지정해서 저장해주었다.

 

 

3. Error Code: 2013. lost connection to mysql server during query 30.000 sec

*한 줄 설명 - 데이터가 너무 커서 시간 초과가 난 것이니 제한을 넉넉하게 바꿔주자.

 

그렇게 utf-8로 바꿔주고 다시 실행하니 에러가 또 발생했는데 이는 시간제한이 30초로 걸려있었는데 30초 안에 다 실행하지 못해서 발생한 에러이다. 워크벤치를 사용한다면 Edit -> Preferences -> SQL Editor -> MySQL Session에 30으로 설정되어있는 값을 넉넉하게 바꿔주면 된다. 나는 약 32만 개 데이터를 넣었는데 70초 정도가 걸렸으니 참고 바란다. 물론 컴퓨터 사양과 기타 등등에 의하여 차이가 있을 수 있으니 넉넉히 잡아놓고 다시 돌려놓는 방법이 좋을 것 같다.

 

 

 

 

 

 

 

 

728x90