mysql workbench에서 table data import wizard로 데이터를 불러오려오는데 100만개 정도의 데이터를 불러오려니 시간이 너무 오래걸렸다.
찾아보니 LOAD DATA 쿼리를 실행하면 불러오는 속도가 빠르다길래 해봤는데 아래와 같은 에러가 발생했다.
Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
구글링해서 찾아봐도 뭐가 뭔지 이해가 안가고 .. 여러가지 방법을 다 시도해보니 얼떨결에 해결이 되긴 됐다. 내가 해 본 방법으로 레쓰고
mySQL에서는 파일을 로드할때 지정된 경로에서만 로드가 되도록 설정되어 있다. 나는 NULL값만 들어있었지만 이것도 문제가 된다고 한다.
워크벤치를 사용하니 자꾸 접속도 어떻게 했는지 까먹는다..
아래와 같이 입력하고 패스워드 입력해서 접속하기
mysql -u root -p
SHOW VARIABLES LIKE 'secure_file_priv';
입력하면 나처럼 NULL 값이든, 어떤 경로가 뜨는 걸 볼 수 있다.
불러오려는 csv파일이 해당 경로에 없기 때문에 발생하는 오류다.
그래서 경로가 있다면 그 값을 삭제해주고, "" 값을 넣어주어야한다.
/usr/local/mysql/etc/my.cnf
/etc/my.cnf
/etc/mysql/my.cnf
이 중에 my.cnf가 있다고는 하는데 나는 아래와 같은 경로에 들어있었다.
/opt/homebrew/etc/my.cnf
참고로, 설치 방법에 따라 my.cnf 파일이 없는 경우도 있다고 하는데, vim으로 빈 my.cnf 파일을 만들고 ... 하는 방법도 있는 것 같았다.
cd /opt/homebrew/etc
위와 같이 cd로 my.cnf가 있는 폴더로 이동한 후
vim my.cnf
이렇게 vim으로 파일을 열면, 아래와 같은 창이 뜬다.
기본은 일반모드인데 i
를 입력하면 맨 아래 --INSERT--라고 뜨면서 편집이 가능하다.
이 때, 맨 아래에 secure-file-priv = ""
를 입력해주고
esc 키를 누르면 처음과 같은 일반모드로 돌아간다.
:wq
로 저장 및 종료로 창 닫기 !
mysql.server restart
로 재부팅하면 끝 !
다시 mysql workbench로 돌아와서 LOAD DATA 쿼리를 실행해봤다.
이번엔 이런 오류 발생 🥹..
Error Code: 1265. Data truncated for column 'product_id' at row 1