서버의 csv파일로 DB table 채우기(터미널)

ossap·2022년 6월 2일
0

맨 밑 한글 인코딩 관련 찾아보다가 콘솔로 안하고 관리하기 쉬운 프로그램이 있다는 것을 알게되었다.
나는 DBeaver라는 프로그램을 깔았고 훨씬 직관적이라 아주 잘 사용하고 있다.
(HeidiSQL이라는 프로그램도 있지만 비교후 디비버 선택!)

아래의 내용은 터미널로 진행했지만, 잘 되지 않았다.
다음 포스팅에서 같은 내용을 더 쉽고 직관적인 dbeaver를 활용해 데이터를 import하겠다.


1. MariaDB 접속 with 관리자 유저

이제 서버에 csv파일이 들어갔으니, 테이블로 데이터를 불러와 넣을 것이다.

1.1. 유저와 관리자 권한 확인

  1. mysql; 을 입력해 쿼리문을 사용할 수 있도록 전환!
  2. SELECT host, user FROM mysql.user; 쿼리문을 사용해 호스트와 유저리스트 확인.
  3. SHOW GRANTS FOR current_user; 로 현재 사용자 권한 확인
    (나는 처음에 root계정을 들어와 박스 첫줄에 'Grants for root@localhost' 라고 쓰인 것을 확인할 수 있다.
    특정 유저의 권한을 확인하고 싶다면, show grants for {해당 유저 이름}@{ip(호스트)};를 입력하면 된다.)

1.2. 관리자 권한으로 접속

나는 역시 root 계정을 사용함.
다른 사용자 이용시 root 자리에 관리자권한이 있는 다른 사용자 이름 입력하면 됨

1) 비밀번호가 없는 경우

mysql -u root

2) 비밀번호가 있는 경우

mysql -u root -p 치고 엔터친 후 비밀번호 입력

2. 테이블에 csv 파일 import

2.1. 경로 접속

  1. show databases; - 전체 데이터베이스를 확인
  2. use 데이터베이스명; - 사용할 데이터베이스 선택
  3. show tables; - 해당 DB 안의 테이블 확인

이렇게 세 명령어로 DB를 선택하고 -> csv데이터를 넣을 테이블 이름을 확인한다!

2.2. 쿼리문 입력

이제, 확인한 테이블 이름과, 지난 포스팅에서 만든 경로+csv파일명으로 쿼리문을 작성해 csv 데이터를 가져올 것이다.

쿼리문은 아래와 같다.

LOAD DATA LOCAL INFILE "경로" INTO TABLE 테이블명 FIELDS TERMINATED BY ",";

여기서 "경로"는, 서버 내의 경로로 설정한다!
나같은 경우, 전 포스팅에서 만든대로 /home/data/kor 경로안에 csv파일을 넣어줬다.
그래서 쌍따옴표("") 안에 경로/파일명.확장자까지 다 입력하면, /home/data/kor/파일명.csv가 된다.

최종적으로 입력할 쿼리문은 이렇다.

LOAD DATA LOCAL INFILE "/home/data/kor/파일명.csv" INTO TABLE 테이블명 FIELDS TERMINATED BY ",";

참고 : Load Data 다음에 Local을 깜빡하면... 에러가 생긴다.. 당연하지만 놓치기 쉬운 에러...!

에러해결법은 여기서 찾음
에러 내용 :
MYSQL query error : Can't get stat of '.....'(Errcode: 13)

2.3. 데이터 확인

SELECT * FROM 테이블명
으로 데이터를 확인해보니... 문제가 있었다.
이렇게 생긴 데이터...

확대해보면,

이렇게 한글이 깨져있었다 ㅠㅠ

3. 한글 깨짐 문제 해결

3.1. 서버 데이터셋 확인

데이터 확인으로 발견한 한글 문제 깨짐을 해결해야 한다.
먼저 데이터셋이 어떻게 되어있는지 확인해보겠다.
status 라는 커맨드로 확인할 수 있다.

Server characterset과 Db characterset이 latin1로 되어있다.
이 부분을 바꿔주어야 한다.

구글링으로 찾은 해결법인
alter 데이터베이스명 mariadb default character set utf8;
이라는 쿼리문을 사용했으나 에러가 발생했다.

이것의 문제는 결국 excel 프로그램이 utf-8로 제대로 인코딩 되지않는다는 점이었다. (검색하다보니 이런 경우가 많았음!)
노트패드나 다른 변환 프로그램으로 변경해서 저장시 제대로 들어갔다..!

참고 사이트

profile
오삽 : 오늘도 삽질

0개의 댓글