CSV
- 엑셀로 정리된 데이터를 그대로 읽어 테이블 타입, 열의 이름과 비교한 후 열에 맞는 데이터를 입력(insert)
→ 특히, 대량의 데이터를 입력할 때 극한의 효율을 보여줌
but, 데이터 타입 또는 열 순서, 파일 경로가 정확히 일치해야 하고, 세션 관리자에게 경로 접근 권한이 있어야 함
(하나라도 안 지키면 여지없이 오류 날림)
- 엑셀에서 csv를 다른 이름으로 저장할 때, 인코딩을 utf-8로 저장해야 함
but, 엑셀에서 저장했어도 utf-8이 적용 안 될 가능성이 매우 큼
→ 해결방법 : 메모장에서 csv파일을 열어 다른 이름으로 인코딩을 utf-8(BOM 없는 걸로)로 설정해줘야 바뀜 (귀찮아도 하는 걸
추천) 메모장에서 저장할 때, 파일명을 엑셀 정리 파일과 다르게 설정해야 문제가 생겨도 엑셀 작업을 최소화 할 수 있음
(귀찮으니 그냥 덮어씌운다? 글자 다 깨져서 엑셀에서 수정 불가 → 엑셀 작업부터 새로 시작)
/*
1번 테이블 기준 : member_grade
삽입할 데이터가 저장된 csv 파일의 경로를 지정
("\"는 경로 인식이 안 되므로, sql에서는 "\\"로 작성해야 제대로 경로를 찾을 수 있음)
엑셀 정리 파일과 구분하기 위해 해당 파일은 번호(1)를 부여하여 구분
*/
LOAD DATA LOCAL INFILE 'D:\\mekite\\team1\\db_insert\\db_table_insert\\member_grade1.csv'
-- 데이터를 삽입할 테이블을 지정 : 현재 예시로는 'member_grade'가 이에 해당
INTO TABLE member_grade
/*
각 필드(열)를 쉼표(,)로 구분해 데이터 구분
ex. "id1","pw1","name1" → 쉼표로 분리된 데이터는 각 열에 매핑됨
*/
FIELDS TERMINATED BY ','
/*
데이터가 ""로 감싸져 있음을 의미 : 큰따옴표 내부의 데이터만 삽입됨
(사용되면 ""는 제거한 뒤 그 안의 데이터만 입력)
ex. "name" → name로 입력됨
큰 따옴표가 없는 데이터는 그대로 읽음(ex. int, double, date, datetime 등)
*/
ENCLOSED BY '"'
/*
각 행(줄)이 줄바꿈 문자(\n)으로 끝난다는 의미
\n을 기준으로 데이터를 행 단위로 구분함(한 줄의 데이터는 한 행으로 삽입)
→ window 환경에서는 \n\r 문제가 있을 수 있지만, 데이터 삽입은 잘 실행됨
*/
LINES TERMINATED BY '\n'
/*csv 파일의 첫번째 행(헤더)를 무시함(헤더가 없다면 굳이 넣지 않아도 무방)
만약 헤더가 있는데 아래 구문을 입력 안하면 헤더까지 데이터에 그대로 입력됨(나도 알고 싶지 않았음... 진짜로...)
아래 구문 입력 시, csv 파일에서 첫번째 줄을 건너뛰고 두번째 줄부터 데이터를 읽음
*/
IGNORE 1 ROWS;
CSV 작업 순서
- 계정(세션관리자) + DB 생성 → 테이블 drop & create 구문 작성 후 입력 → csv 엑셀 작업 → 메모장에서 utf-8 확인 후 저장
→ sql에 csv입력 구문(위 작성내용) 작성
▶ 자동으로 sql에서 이미 만들어진 테이블의 열 순서와 데이터 타입을 비교하여 입력(insert)
다 해봤는데 해결이 안 된다?
- 프로그램 자체의 오류(코드 누적)일 가능성 있음 → TRUNCATE 구문으로 해당 테이블을 비운 뒤, 새로고침 || 프로그램 재시작 후 재시도 추천
'Others. > TIP' 카테고리의 다른 글
| 자체 특강) 미리캔버스 AI로 딸깍 프리젠테이션 만들기(+GPT) (0) | 2026.05.15 |
|---|---|
| 노션(Notion) 단축키(블록+텍스트+마크다운+데이터베이스/페이지+실전 단축키) (0) | 2026.05.12 |