-
[MySQL & CSV] 대용량 데이터 CSV파일 MySQL로 import하기 / 로컬 환경, MySQL WorkbenchMySQL 2023. 7. 11. 14:10반응형
1. 자료형에 알맞게 테이블을 형성한다. 해당 코드는 utf8mb4로 테이블을 형성하는 코드이다.
CREATE TABLE `스키마이름`.`테이블이름` ( `CASE_NUMBER` text, `CASE_STATUS` text, (이하 컬럼에 알맞은 자료형으로 table 생성) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
2. 테이블이 잘 형성되었는지 확인하고 다음 코드를 시도해본다.
대용량 데이터는 MySql Workbench의 'import'로 불러오기에는 너무 많은 시간이 걸린다. 그래서 infile코드로 빠르게 불러올 수 있다. 몇만개의 데이터를 몇십초 안에 불러올 수 있다.
LOAD DATA LOCAL INFILE 'C:/Program Files/MySQL/MySQL Server 8.0/Uploads/파일이름.csv' IGNORE INTO TABLE 스키마이름.테이블이름 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' lines terminated by '\n' STARTING BY '' IGNORE 1 ROWS;
이 때 윈도우의 경우, 경로를 꼭 / 슬래시로 해주어야한다. 역슬래시를 쓰면 오류가 발생한다.
다양한 에러가 생길 수 있는데, 해결 방법은 아래와 같다.
3. local 파일을 불러올 수 있도록 설정한다.
cmd 등에서 mysql -u root -p로 들어가 mysql로 접근한다. 이 때 비밀번호를 입력해야한다.
show variables like 'local_infile';
local_infile 설정이 on으로 되어있는지 확인한다.
off 상태이면, 아래와 같이 on으로 설정값을 바꿔준다. 이는 cmd 창을 껐을 때에도 유지된다
set global local_infile = 1;
반응형4. 업로드 허용되는 파일 주소가 어디인지 확인한다.
SELECT @@GLOBAL.secure_file_priv;
이때 C:/Program Files/MySQL/MySQL Server 8.0/Uploads/이라는 주소가 떴다. 원래 이 폴더 내에 있는 파일들만 Import할 수 있다.
5. 해당 폴더가 없는 경우
해당 경로에 Uploads 폴더가 없을 수 있다. 그러면 같은 이름의(대소문자 주의) 폴더를 생성하고, 권한을 준다. 이 때 관리자 권한이 필요하다.
Uploads 폴더 생성 후 오른쪽마우스 > 속성 > 보안 > 편집 > 모든 권한에 채크.
권한을 주지 않고 파일을 불러오려고 했을 때 접근 오류가 발생할 수 있으므로 해당 폴더에 모든 권한을 부여해주었다.
이후 이 폴더 안에 불러올 CSV 파일을 넣는다.
6. 이후 다시 처음 코드를 실행시켜보자.
이 때 이미 테이블이 만들어졌다면 테이블을 생성하는 코드는 생략해준다.
아주 빠른 시간 내에 많은 양의 데이터를 불러올 수 있었다면 성공 !!
반응형