본문 바로가기
SQL/SQL Grammar

local에 있는 csv 파일을 mySQL로 불러오기

by ISLA! 2023. 10. 6.

MySQL Shell Script에서 직접 파일을 불러오는 방식으로

다음과 같은 에러를 해결할 수 있음

 

1. mySQL workbench 재접속

  • Quit MySQL Workbench

 

2. 다시 접속 후, Edit Connection 에서 설정 변경

  • Edit Connetion > Advanced > Others 메뉴
  • OPT_LOCAL_INFILE=1  을 입력
  • Test Connection 버튼을 클릭하여 정상적으로 접속이 되는지 확인

 

 

3. 테이블 생성

  • 테이블이 미리 생성되어 있지 않으면 csv 파일을 불러올 수 없음
  • 첫번째 줄 의미 : 앞서 생성된 스키마를 사용하겠음
  • dataset2라는 테이블 생성하기
USE mydata;

CREATE TABLE `dataset2` (
  `Clothing ID` int DEFAULT NULL,
  `Age` int DEFAULT NULL,
  `Title` text,
  `Review Text` text,
  `Rating` int DEFAULT NULL,
  `Recommended IND` int DEFAULT NULL,
  `Positive Feedback Count` int DEFAULT NULL,
  `Division Name` text,
  `Department Name` text,
  `Class Name` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

 

3. 터미널 설정 변경

  • 터미널 접속, mysql 실행 
mysql -u root -p
(password 입력시 실행됨)
# 아래 명령어 실행
mysql> show global variables like 'local_infile';

# 아래 내용 확인
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | OFF   |
+---------------+-------+
1 row in set (0.00 sec)
  • 위 결과가 off 로 나왔다면 on 으로 변경해야한다.
# 아래 명령어 실행
mysql> set global local_infile=true;

# 결과
Query OK, 0 rows affected (0.00 sec)
  • 위 명령어를 다시 실행하여 On으로 바뀐거 확인
mysql> show global variables like 'local_infile';

# 결과 확인
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+
1 row in set (0.01 sec)

실제 터미널 창 예시

 

4. 데이터 불러오기

  • 먼저 불러올 데이터의 절대경로를 확인한다
  • 스키마명 + 테이블명을 모두 입력한다.
  • 작성 예시는 아래와 같다 : 컬러 음영이 바꿔야할 부분

LOAD DATA LOCAL INFILE "/Users/angela/Desktop/SQLdatasets/Womens Clothing E-Commerce Reviews.csvINTO TABLE mydata.dataset2 FIELDS TERMINATED BY "," LINES TERMINATED BY "\n" IGNORE 1 ROWS;

 

 

  • 또는 필요시 아래와 같이 ENCLOSED BY ‘“’  를 추가하기도 한다
  • 불러오려는 데이터의 내용(구조)에 따라 옵션이 추가되는 것이다.
mysql>

LOAD DATA LOCAL INFILE "/Users/angela/Desktop/SQLdatasets/Womens Clothing E-Commerce Reviews.csv" 
INTO TABLE mydata.dataset2 FIELDS TERMINATED BY “,” ENCLOSED BY ‘“’ LINES TERMINATED BY “\n” IGNORE 1 ROWS;

 

  • 실행이 잘 되었다면 아래와 같이 나타남

 

 

5. 데이터 확인

  • 워크벤치에서 쿼리를 실행하여 실제 조회가 되는지 확인

 

728x90