CSV→SQL 변환기(INSERT문 생성)

CSV 파일을 SQL의 INSERT문·CREATE TABLE문으로 변환합니다. MySQL·PostgreSQL·SQLite 3가지 방언을 지원하며, 열의 타입(정수·소수·문자열)을 자동으로 판정합니다. 변환 처리는 모두 브라우저 내에서 이루어지며 데이터는 서버로 전송되지 않습니다.


구분자
첫 줄을 헤더로 사용
테이블 이름
SQL 방언
CREATE TABLE문도 함께 생성
빈 값을 NULL로 처리
여러 행을 하나의 INSERT문으로 합치기


            
            복사되었습니다!
            
          

CSV를 입력하면 생성된 SQL문이 여기에 표시됩니다.

CSV 행과 INSERT문의 대응 관계

CSV의 한 행 name,age,city
변환된 INSERT문 INSERT INTO `my_table` (`name`, `age`, `city`) VALUES ('Alice', 30, 'Tokyo');

첫 줄을 헤더로 사용하는 경우, 두 번째 줄부터의 각 행이 헤더의 열 이름을 지정한 하나의 INSERT문으로 변환됩니다. 정수·소수로 인식된 열은 따옴표 없는 숫자로, 그 외의 열은 작은따옴표로 감싼 문자열로 출력됩니다.

  • 열의 타입(정수·소수·문자열)은 해당 열의 모든 데이터 행 값을 검사하여 자동으로 판정됩니다. 단 하나라도 숫자가 아닌 값이 있으면 그 열 전체가 문자열 타입으로 처리됩니다.
  • "여러 행을 하나의 INSERT문으로 합치기"를 활성화하면 `INSERT INTO ... VALUES (...), (...), (...);` 형태의 단일 문으로 합쳐져, 대량의 데이터를 입력할 때 실행 횟수를 줄일 수 있습니다.
  • MySQL은 백틱(`), PostgreSQL·SQLite는 큰따옴표(")로 테이블명·열명을 감싸므로, SQL 방언 선택에 따라 인용 문자가 자동으로 바뀝니다.
  • "빈 값을 NULL로 처리"를 비활성화하면, 문자열 타입 열은 빈 문자열('')로, 숫자 타입 열은 NULL로 출력됩니다.

자주 묻는 질문

해당 열에 포함된 모든 데이터 행의 값을 검사하여, 전부 정수 표기이면 INTEGER 타입, 전부 소수 표기이면 REAL 타입, 그 외(문자열이나 혼합)는 TEXT 타입으로 자동 판정합니다. CREATE TABLE문을 생성할 경우 이 판정 결과가 그대로 열의 타입으로 출력됩니다.

네. "SQL 방언"에서 PostgreSQL 또는 SQLite를 선택하면, 테이블명·열명의 인용 문자(큰따옴표)와 타입명이 각 데이터베이스에 맞는 형식으로 출력됩니다.

SQL 표준 이스케이프 방식에 따라 작은따옴표가 자동으로 2개('')로 변환되므로, 그대로 SQL문으로 실행할 수 있습니다.

아니요. 변환 처리는 모두 브라우저 내 자바스크립트에서 이루어지며, 입력한 CSV 내용이 서버로 전송되는 일은 없습니다. 실제 데이터가 포함된 CSV도 안심하고 사용할 수 있습니다.
ツールくん

여담 ― 합쳐진 INSERT문이 "더 빠른" 이유

이 도구로 생성할 수 있는 "여러 행을 하나의 INSERT문으로 합치기"(`INSERT INTO t VALUES (1,'a'), (2,'b'), ...;`)는 행마다 개별 INSERT문을 실행하는 경우보다 실행 속도가 훨씬 빨라질 수 있습니다. 이는 데이터베이스가 각 SQL문을 분석하고 실행 계획으로 변환하는 오버헤드와, 문장 수만큼 반복되는 트랜잭션 커밋 비용을 줄일 수 있기 때문입니다.

다만 MySQL에는 `max_allowed_packet`, PostgreSQL에는 이와 유사한 통신 버퍼 상한이 있어, 너무 많은 행을 하나의 INSERT문에 담으면 그 한도를 초과하여 오류가 발생할 수 있습니다. 실무에서는 수백~수천 행 단위로 문장을 나누는 것이 일반적인 방법입니다.

CSV 파일을 테스트용 데이터베이스에 입력하는 작업은 개발 현장에서 흔히 "시드 데이터 준비(seeding)"라고 불리며, 많은 웹 프레임워크(Laravel의 seeder·factory 등)가 이를 위한 전용 메커니즘을 제공할 정도로 빈번한 작업입니다. 이런 도구는 그런 메커니즘까지 쓸 필요가 없는 소규모 검증이나 데이터 이관 시 빠르게 사용할 수 있는 수단으로 유용합니다.