ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL & CSV] 대용량 데이터 CSV파일 MySQL로 import하기 / 로컬 환경, MySQL Workbench
    MySQL 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;

    on으로 변경되었는지 확인한다.

     

    반응형

    4. 업로드 허용되는 파일 주소가 어디인지 확인한다. 

    SELECT @@GLOBAL.secure_file_priv;

    이때 C:/Program Files/MySQL/MySQL Server 8.0/Uploads/이라는 주소가 떴다. 원래 이 폴더 내에 있는 파일들만 Import할 수 있다. 

     

     

     

    5. 해당 폴더가 없는 경우

    해당 경로에 Uploads 폴더가 없을 수 있다. 그러면 같은 이름의(대소문자 주의) 폴더를 생성하고, 권한을 준다. 이 때 관리자 권한이 필요하다.  

    Uploads 폴더 생성 후 오른쪽마우스 > 속성 > 보안 > 편집 > 모든 권한에 채크. 

    권한을 주지 않고 파일을 불러오려고 했을 때 접근 오류가 발생할 수 있으므로 해당 폴더에 모든 권한을 부여해주었다. 

    이후 이 폴더 안에 불러올 CSV 파일을 넣는다. 

     

     

     

     

    6. 이후 다시 처음 코드를 실행시켜보자. 

     이 때 이미 테이블이 만들어졌다면 테이블을 생성하는 코드는 생략해준다. 

    아주 빠른 시간 내에 불러온다

    아주 빠른 시간 내에 많은 양의 데이터를 불러올 수 있었다면 성공 !! 

    반응형

    댓글

Designed by Tistory.