Databases / load data infile (MySQL)
시작하면서,,,
MySQL에 대해 무지한 상태로 진행 Version 은 8.x?
스터디에서 필요한 정보를 미리 엑셀에 한 칸 단위로 하여 구분해서 저장일일히 Insert 문을 사용해서 테이블에 넣기에는 ....... 너무 바보같은 짓이라고 생각해서 IMPORT를 해보기로함
첫번째 문제 발생;
경로 - show global variables like "secure_file_priv";기본적으로 경로를 수정하거나 상태를 변경하지 않았다면, ProgramData\MySQL\MySQL Server 8.0 에 my.ini 파일이 존재하는 디렉토리 혹은 그 하위 Uploads 디렉토리에 경로가 잡혀있을 것이다.
따라서, 해당 경로 위치에 원하는 참조문서를 넣어도 되고 (첫번째 방법)
혹은 해당하는 경로를 변경해도 된다 (두번째 방법)
SET GLOBAL secure_file_priv = "";
or
My.ini 파일에서 편집 기능 사용
secure_file_priv = ""; 수정
해당 포스트에서는 첫번째 방법을 수행하였다.
해당하는 위치에 엑셀파일을 csv 문서로 변환하여 저장하였고, 지정된 경로에 해당하는 문서를 참조 하였다.
두번째 문제 발생 ;
error code: 2068. load data local infile file request rejected due to restrictions on access. in mysql8.0 에러발생
보통의 경우는 환경변수를 조작하여 mysql 에 통하는( cmd 에서 mysql -u 유저 -p 비밀번호로 접속가능하게) 방법
mysql --local-infile -u 유저 -p 비밀번호 DB명 < 참조문서
으로 접속을하면 사용할 수 있다고는 한다.....
근데 난 안됐다 다음, //
왜 안되었는가?
(시스템변수를 조작하려고 하였지만 설정해놓고 나중에 후폭풍을 감당하지못할것 같아서)
and 직접적인 문제가 아니라고 생각했다.
(왜냐하면, 외부 콘솔에서 들어가면서 설정할 수 있는문제면 내부에서도 가능할 것 이라 생각했다.)
그래서 해당하는 명령어 (local_infile) 의 상태를 먼저 확인한다. == > 기본값은 OFF(False) 로 되어있다.
set global local_infile = 1; 으로 설정하여 해당 값을 TRUE 로 변경 ( ON 으로 변경 )
그리고 다시확인하면 ==
하.... 모든문제는 끝났다.
세번째 문제 발생 ;g
다 설정을 했는데도 문제가 생겼다? 그러면 사람문제거나 내 문제거나 암튼 내 문제다....
그래서 근본적인 문제를 찾아보려고한다.
먼저 명령어 혹은 경로, 삽입테이블, 속성, 다찾아봤는데 모르겠다...
계속 찾아도 다들 시스템 설정만 하라고한다.
반 포기 직전 전에 혹시 \를 한개만 쓰면 Java 에서 \n 이나 경로로 인식을 못하는 것이 아닌가?
하면서 검색을 다시시도해보았는데 이게웬걸
Window 에서는 \\로 경로를 잡아야한다고 한다.... 인생 참 덧없다....
load data local infile 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\Untitled spreadsheet - 220407.csv'
// 개인 데스크탑에 존재하는 엑셀문서를 (로컬데이터) 참조하는 local infile
into table inflow_ex
// inflow_ex 테이블에 삽입
FIELDS TERMINATED BY","
// csv 문서(쉼표로 각 분위를 분류) 각 속성별 "," 로 분류한다.
Lines terminated by"\n"
// 각 행을 \n (엔터) 단위로 분류한다.
Ignore 1 Lines (name,nick_name,youtube_addr,Insta_addr,Fancafe_addr,job);
//선택한 속성에 따른 1행씩 참조문서에서 마이그레이션 한다.
select num,job,name,nick_name,youtube_addr,Insta_addr,Fancafe_addr from inflow_Ex;
--------- 필수 ----------
엑셀문서에서 작성할 떄, 한칸 한칸 정확히 구분해야 너무편하다....
구분안하면 나중에 왜 밀리지?
왜 끌리지
왜 한칸 뒤에있지? 재밌어진다..
그래서 나도 뭔갈 해냈다는데 뿌듯하면서 재밌었다.
ㅎ 끗 ㅎ