본문 바로가기
개발팁

csv 파일 mysql/mariadb로 insert하기

by devscb 2023. 11. 6.
반응형

요구사항

mariadb 설치 및 계정 필요

로그파일 준비

파일내용이 아래와 같이 생긴 test_log.log 파일을 예시로 준비하였습니다.

"2023-03-10 18:13:10", "test", "search.html"
"2023-03-12 18:13:10", "keyword test", "search.html"
"2023-03-13 18:13:10", "keyword", "search.html"
"2023-03-14 18:13:10", "test", "search.html"
"2023-03-15 18:13:10", "keyword", "search.html"

mysql에서 table 생성

create table stats_raw(
 created_time datetime,
 keyword varchar(100),
 source text
);

아래 명령어로 table 정상적으로 생성되었는지 확인

desc stats_raw

 

csv파일 insert

LOAD DATA LOCAL INFILE 'test_log.log' INTO TABLE stats_raw FIELDS TERMINATED BY ', ' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';

test_log.log파일을 stats_raw라는 테이블에 insert한다는 뜻이며,
filed별 구분자는 ', '로,
라인별 구분자는 '\r\n',
각 값은 '"' 로 묶여진다는 뜻입니다.

아래 쿼리로 data 정상적으로 입력되었는지 확인 가능합니다.

select count(1) from stats_raw;

아래 명령어로 월별, 키워드별 count 통계정보 확인 가능합니다.

select concat(year(created_time),'-',month(created_time)) as log_time, keyword, count(1) as cnt from stats_raw group by concat(year(created_time),'-',month(created_time)), keyword order by cnt;

mysql 접속않고 bash에서 명령어 바로 실행

bash에서 mysql 명령어를 바로 실행할 수 있는 팁입니다.

mysql -u [계정 이름] -p[패스워드] -D [데이터베이스 이름] -e "[쿼리문]"

사용예시

mysql -u test -ptest -D test_db -e "desc stats_raw"

총평

csv 파일을 mariadb로 import하는 방법을 찾아보았을 때, python으로 하는방법이 먼저 나오더군요.
패키지도 설치해야하고 코딩도 좀 길고 해서 더 쉬운 방법이 없나했더니 mariadb에서도 다행히 지원하더군요.
python으로 import 하는 방식은 왜 먼저 검색이 되었는지 모르겠습니다.
심지어 delemeter 문자를 지정할 수도 없는 등의 불편함이 있었습니다.

#mysql,#mariadb,#csv,#import,#db

 

https://devscb.com/post/193/

 

Inserting csv file into mariadb

Requirementsmariadb installation and account required Prepare log fileWe have prepared a test_log.log file with the file contents as shown below as an example. 12345"2023-03-10 18:13:10", &

devscb.com

 

728x90
반응형

댓글