SQL | workbench 대용량 데이터 불러오기

소리·2024년 6월 27일
0

sql workbench 를 처음 설치하고 데이터를 어떻게 불러와야 할지 몰라서 검색하면 가장 먼저 뜨는 게 Data Import 버튼을 사용하라는 것이다.

그런데 용량이 있는 편이면 이게 렉이 걸렸나 싶을 정도로 오래 걸린다.

그래서 다시 로딩할 생각으로 닫아버리면, workbench가 제대로 안 닫혀 에러가 떠서 다시 검색창에 검색한다..

그렇다면 대용량 데이터를 어떻게 좀더 빠르게 불러올 수 있을까?


LOAD DATA INFILE [파일경로]
INTO TABLE [테이블명]
CHARACTER SET euckr (한글 깨짐 방지)
FIELDS TERMINATED BY ',' (csv는 ,로 열 구분)
LINES TERMINATED BY '\N' (csv는 줄바꿈으로 행 구분)
IGNORE 1 ROWS (첫번째 행은 컬럼명이므로 무시)
(@csv파일의 컬럼1, @csv파일의 컬럼2 ...)
SET 테이블의 컬럼1 = @csv파일의 컬럼1,
테이블의 컬럼2 = @csv파일의 컬럼2,
...

위와 같이 LOAD DATA 구문으로 할 수 있다는 걸 찾았다.

  1. table을 만들고
  2. 거기에 데이터를 로드하는 것이다.
    그러니 CREATE TABLE 먼저 진행!

그렇지만 여기서도 많은 단계가 있었는데, 파일경로를 임의로 선정할 수 없고, sql에 등록(?)되어있는 링크에 파일이 올라가 있어야 제대로 파일이 불러와졌다.

파일 경로를 찾기 위해서

  1. 명령 프롬프트에 들어가서

  2. mysql --local-infile=1 -u root -p 입력

  3. 그러면 파일 위치가 나온다. 나는 C:\ProgramData\MySQL\MySQL Server 8.0\Uploads

  1. 여기에 업로드 할 파일을 올려놓고, 명령 프롬프트에서

  2. mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile'; 이렇게 입장

  3. value 값의 on/off 확인한다. off 면 mysql> SET GLOBAL local_infile = 1;을 입력해 on으로 켜고

  4. C:\ProgramData\MySQL\MySQL Server 8.0 여기에 있는 my.ini 파일에
    client와 mysqld 뒤에 아래 것을 입력한다.

[client] loose-local-infile=1

[mysqld] local_infile=1

  1. 그러면 data load 가 된다.

  2. 그리고 데이터 set할 때 유형이랑 잘 해야한다.

다르게 했더니 팀원들이랑 데이터가 달라지게 불러와져서 여러 번 다시 테이블을 만들고 지웠다.

휴.

profile
데이터로 경로를 탐색합니다.

0개의 댓글