본문 바로가기

CSV → SQL INSERT

브라우저 처리

CSV를 데이터베이스용 INSERT 문으로 바꿉니다. 빈칸은 NULL, 작은따옴표는 두 번 써서 처리하고, MySQL·PostgreSQL·SQLite·SQL Server에 맞는 이름 따옴표와 여러 행 묶기를 고를 수 있습니다.

사용 전 확인
  • 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
도구 실행입력 후 결과 확인
CSV → SQL INSERT 샘플 실행

엑셀이나 CSV로 받은 데이터를 데이터베이스 테이블에 넣는 INSERT 문을 만들어 주는 도구입니다. 두 번째 칸에 테이블 이름을 적으면 첫 줄의 열 이름이 컬럼 목록이 되고, 각 행이 VALUES 한 묶음이 됩니다.

브라우저 처리
샘플 결과
INSERT INTO "customers" ("id", "name", "zip") VALUES
  (1, 'O''Brien', '04524'),
  (2, '김하나', NULL);
자바스크립트가 활성화되면 이 영역이 실제 입력, 실행, 결과 패널로 바뀝니다.

CSV → SQL INSERT 사용 가이드

엑셀이나 CSV로 받은 데이터를 데이터베이스 테이블에 넣는 INSERT 문을 만들어 주는 도구입니다. 두 번째 칸에 테이블 이름을 적으면 첫 줄의 열 이름이 컬럼 목록이 되고, 각 행이 VALUES 한 묶음이 됩니다.

빈칸은 NULL로, 숫자는 따옴표 없이, 나머지는 작은따옴표로 감싸고 O'Brien의 따옴표는 ''로 두 번 써서 SQL 문법이 깨지지 않게 합니다. 04524 같은 우편번호나 15자리를 넘는 긴 숫자는 앞자리 0이나 정밀도가 사라지지 않도록 문자열로 남깁니다.

'customers; dialect=mysql'처럼 데이터베이스를 지정하면 MySQL·MariaDB는 `백틱`, SQL Server는 [대괄호], PostgreSQL·SQLite는 "큰따옴표"로 이름을 감싸고, MySQL에서는 역슬래시도 이스케이프합니다. batch=100을 더하면 행 100개를 INSERT 문 하나로 묶습니다.

사용 방법

  1. 'CSV' 칸에 넣을 데이터를 붙여 넣습니다. 첫 줄이 컬럼 이름이 됩니다.
  2. '테이블 이름' 칸에 customers처럼 적고, 필요하면 '; dialect=mysql; batch=100'을 덧붙입니다.
  3. '실행'을 눌러 INSERT 문을 확인하고 .sql 파일로 받아 데이터베이스 도구에서 실행합니다.

예시: PostgreSQL용 묶음 INSERT

입력
id,name,zip
1,O'Brien,04524
2,김하나,
---
customers; dialect=postgres; batch=100
결과
INSERT INTO "customers" ("id", "name", "zip") VALUES
  (1, 'O''Brien', '04524'),
  (2, '김하나', NULL);

우편번호 04524는 앞의 0을 지키려고 문자열로, 비어 있는 우편번호는 NULL로 들어갔습니다.

이럴 때 쓰면 좋아요

  • 엑셀로 정리한 초기 데이터를 개발용 데이터베이스에 넣을 때
  • 테스트용 시드 데이터를 SQL 파일로 만들어 저장소에 함께 둘 때
  • 관리 화면이 없는 테이블에 몇십 건의 데이터를 한 번에 넣을 때
  • 다른 시스템에서 내보낸 CSV를 데이터베이스 마이그레이션 스크립트로 바꿀 때

문제가 생겼을 때

MySQL에서 "id" 근처 문법 오류

MySQL은 기본 설정에서 큰따옴표를 이름으로 인식하지 않습니다. 테이블 이름 뒤에 '; dialect=mysql'을 붙여 백틱으로 감싸세요.

true·false가 불리언 컬럼에 안 들어감

true와 false는 'true' 문자열로 들어갑니다. PostgreSQL은 그대로 받지만 MySQL의 TINYINT(1) 컬럼이라면 CSV에서 1과 0으로 바꿔 두세요.

활용 팁

  • 열 이름에 공백이나 한글이 있어도 따옴표로 감싸므로 문법은 맞지만, CSV 헤더 정규화기로 먼저 정리하면 이후 쿼리를 쓰기 편합니다.
  • shop.items처럼 스키마를 붙인 테이블 이름도 점을 기준으로 나눠 각각 따옴표를 씌웁니다.

자주 묻는 질문

CREATE TABLE 문도 만들어 주나요?

INSERT 문만 만듭니다. 테이블은 컬럼 타입을 정해 먼저 만들어 두어야 하며, 컬럼 이름은 CSV 첫 줄과 같아야 합니다.

batch는 몇까지 쓸 수 있나요?

1부터 1,000까지입니다. 너무 큰 묶음은 데이터베이스의 쿼리 길이 제한에 걸릴 수 있어 100~500 정도가 무난합니다.

Oracle도 지원하나요?

dialect에는 mysql, mariadb, postgres, sqlite, sqlserver만 쓸 수 있습니다. Oracle은 큰따옴표로 감싼 이름의 대소문자를 구분하므로, 대문자로 만든 테이블이라면 CSV 열 이름도 대문자로 맞춘 뒤 batch=1로 만드세요.