DHistory

[Docker] MySQL Container에 CSV 파일 넣기 - 기본 본문

Programming/Docker

[Docker] MySQL Container에 CSV 파일 넣기 - 기본

ddu0422 2023. 5. 23. 17:22

MySQL Container에 왜 CSV를 넣게 되었는가?

datadog에 저장된 로그를 분석하는 작업을 진행하고 있었습니다. 로그를 group by하여 로그를 분석해야할 일이 생겼습니다.
처음에는 datadog에 내장되어 있는 group by를 활용하여 로그 분석을 진행했습니다.


하지만, 원하는 방식으로 group by를 할 수 없었고 다른 field로 group by 시 속도도 상당히 느렸습니다.

자유자재로 활용할 수 있고 빠르게 이용할 수 있는 방법을 찾기 시작했습니다.


로그를 CSV 파일로 추출할 수 있었기 때문에 해당 로그를 group by 하기 위해 DB를 생각했습니다.

 

현재 local에 설치된 DB는 없었고 docker로 mysql container를 띄워 사용중이었습니다.
이를 이용하고자 Docker MySQL에 CSV를 입력하는 방식을 찾게 되었습니다.

MySQL Container에 CSV 파일 넣는 방법

다른 블로그를 참고하여 작업을 진행했습니다.

 

1) docker로 csv file을 옮깁니다.

docker cp ~/<csv-file-name>.csv <container-id>:/

2) docker mysql에 접속합니다.

docker exec -it /bin/bash {mysql_container_name}
# --local-infile=1을 생략하면 2068 error가 발생합니다.
mysql --local-infile=1 -uroot -p

3) csv file을 읽어 table을 만듭니다.

LOAD DATA LOCAL
INFILE '{file_name}.csv'
INTO TABLE {table_name}
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

4) index를 생성 후 group by를 진행합니다.

CREATE INDEX index_name
ON table_name (column1, column2, ...)

5) 테이블을 자유자재로 사용합니다.