MySQL을 Workbench와 연결시키고, csv 파일을 업로드 하는 과정에서 여러 문제가 발생했습니다.
간단한 작업 실행 순서와 간단한 오류 발생 원인을 정리해보려고 합니다.
MySQL, Workbench 다운로드 및 초기 세팅
1. mysql community 8.0 download ** 맥os x86 64bit DMG Archive 사용
2. mysql workbench 8.0 download ** 맥os x86 64bit DMG Archive 사용
3. 시스템 환경설정 - 하단 좌측의 Mysql 선택 - 우측 8.0.35 숫자 하단의 mysql 파일 경로 확인
(디폴트 : /usr/local/mysql-8.035-macos13-x86_64) ** Finder에서 경로 검색을 통해 이동하는 방법 : command + shift + g
4. 터미널에서 환경변수설정
1) 터미널에서 sudo nano /etc/paths 입력
2) Password 입력 (본인은 맥북과 mysql 패스워드가 동일해서 무엇을 입력하는 건지 모르겠으니 맥북 비번부터 해보시길)
3) 새로 뜬 pico 창 맨 아랫 부분의 '/sbin' 아랫줄로 커서 옮기고,
아까 확인했던 mysql 경로 /usr/local/mysql-8.035-macos13-x86_64 추가
4) control + x 눌러 exit 하고, 저장 여부 묻는 창 뜨면 y 입력 후 엔터
만약 이 단계를 수행하지 않으면, 나중에 csv 로드 시 터미널에서 에러가 뜹니다. (아마 접근 경로나 권한 때문으로 예상)
참고 블로그 : https://goodteacher.tistory.com/565
[mac] PATH 설정
윈도우에서는 클릭 몇번이면 PATH에 대한 설정이 가능했는데 mac은 왜이리 숨겨놓았을까? 숨긴건 아니고 접근하기가 힘들까.. 오늘은 콘솔에서 mysql에 접근할 일이 있어서 PATH를 잡은 내용을 포스
goodteacher.tistory.com
대용량 csv 업로드 방법
대용량이 아닐 경우, workbench - tables에 커서 대고 마우스 오른쪽 버튼 클릭 - Table Date Import Wizard
를 통해 업로드가 가능하지만, 정말 정말 오래 걸리므로 터미널로 업로드 하는 과정을 정리해보겠습니다.
1. Workbench에 새로운 스키마와 그 안의 테이블 생성하여 도메인, 제약조건 설정
방법 1 :
Create Table table_name (
invoice VARCHAR(),
...
);
방법 2 : 클릭으로
** 만약 이 과정에서 csv 파일의 각 컬럼별 데이터의 형태와 도메인이 일치하지 않는다면
데이터가 제대로 로드되지 않습니다.
2. 터미널 작업
1) 터미널로 이동하여 mysql -u root -p 입력 (root : workbench 디폴트 사용자 이름)
2) 패스워드 입력 (이것은 아마 workbench 패스워드일 것입니다.)
3) set global local_infile=1; 입력. 정상 실행 시 Query OK, 0 rows affected (0.00 sec) 출력
4) quit 입력해서 터미널-mysql에서 빠져나오기
5) 기본 터미널 창에서 mysql --local-infile=1 -u root -p 입력 (root : workbench 디폴트 사용자 이름)
해당 과정은 로컬 인파일 시스템에 데이터베이스를 연결하는 과정이라 합니다.
5) use database명;
6) show tables; 으로 database 안의 테이블 확인
7) 아래 코드를 통해 데이터 업로드
load data local infile '/삽입하고자/하는/csv파일이/있는/경로/파일명.csv'
into table schema_name.table_name 입력
fields terminated by ','
optionally enclosed by '"'
lines terminated by '\n' starting by ''
ignore 1 rows;
성공하면 아래 이미지의 하단과 같은 문구가 뜬다. Workbench에 가서 데이터가 잘 들어갔는지 확인하면 된다.
Loading Large CSV files faster to MYSQL Database using LOAD DATA statement
I was going through Alex The Analyst Data Analyst Bootcamp on YouTube, tailored for complete beginners and available for free.
psgpyc.medium.com