엑셀로 정리된 파일을 mariadb(mysql)에 한번에 insert 하기위한 방법을 정리해보려고 한다.
간단하게 순서를 적어보자면,
1. 엑셀파일의 데이터 정리
- insert 될 데이터만 남기고 열 이름은 삭제한다.
2. 엑셀파일을 CSV 파일로 저장
- 엑셀파일에서 다른이름저장(다른형식)을 클릭한 후 확장자를 CSV로 선택하여 저장한다.
ex) test_insert.csv
3. mariadb에 접속한다. (이 글에서는 DBeaver DBMS를 사용함)
4. 한글 깨짐을 해결하기 위해 위에서 저장한 CSV파일을 메모장으로 연다.
- 메모장으로 연 후, 다른이름으로 저장을 눌러 인코딩을 UTF-8로 맞춰준다. (아래 사진 참고)
5. DBeaver에 다음 명령어를 입력한다.
- 단, 테이블의 필드와 csv 파일의 필드가 일치해야 아래 쿼리가 먹힘. (테이블 컬럼의 순서대로 정렬)
LOAD DATA INFILE 'file_name' -- 입력할 파일의 경로
INTO TABLE tbl_name -- 입력받을 테이블의 이름
FIELDS -- 라인 내의 필드들을 구분하는 방법
TERMINATED BY ',' -- 각 필드가 끝나는 구분문자를 지정해줌
ENCLOSED BY '"' -- 구분된 필드 내에서 시작/끝 을 알리는 문자를 지정해줌
LINES -- 각 라인을 구분하는 방법
TERMINATED BY '\n' -- 각 라인이 끝나는 구분문자를 지정해줌
IGNORE 1 LINES -- 처리하지 않을 라인을 지정해줌
**실제 사용 예
- 서버 내에 있는 파일이 아니라, 로컬에 있는 파일을 올릴 때는 LOCAL 붙여줘야 한다.
LOAD DATA LOCAL INFILE 'C:/work/uploadfiles2.csv'
INTO TABLE FILES
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
**결과
- 아래 부분에 보면 63ROW를 넣는데 30ms 걸린 것을 볼 수 있다.
'DB > MySQL' 카테고리의 다른 글
[MySQL] LAST_INSERT_ID() (0) | 2021.11.15 |
---|
댓글