제목에 있는 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초 정도가 걸렸으니 참고 바란다. 물론 컴퓨터 사양과 기타 등등에 의하여 차이가 있을 수 있으니 넉넉히 잡아놓고 다시 돌려놓는 방법이 좋을 것 같다.
'개발 > CS' 카테고리의 다른 글
[DB] 데이터베이스 시스템 (DataBase System) (0) | 2022.04.06 |
---|---|
[DB] DBMS - 데이터베이스 관리시스템 (DataBase Management System) (0) | 2022.04.02 |
[DB] 데이터베이스(DataBase) 기본개념 (0) | 2022.04.01 |
[DB] RDBMS, MySQL, JDBC (0) | 2022.03.19 |
[네트워크] OSI 모델, TCP/IP 모델이란? (feat. 캡슐화, 역캡슐화) (0) | 2021.11.16 |