CSV를 SQL INSERT 문으로 변환
CSV 행을 SQL INSERT 문으로 변환합니다 — 테이블 이름, 헤더 행 선택, 문자·숫자·이스케이프된 따옴표의 올바른 처리를 지원합니다.
줄바꿈·날짜·숫자 형식
INSERT INTO users (name, age, city) VALUES ('김철수', 36, '서울');
INSERT INTO users (name, age, city) VALUES ('이영희', 45, '부산, 대한민국');CSV 행을 SQL INSERT 문으로 변환
쉼표, 세미콜론, 탭, 세로 막대로 구분된 데이터를(구분자에는 콜론·캐럿·공백과 자동 감지도 있습니다) 붙여넣고 대상 테이블 이름을 입력하면, 각 행마다 바로 실행할 수 있는 INSERT INTO ... VALUES (...); 문이 하나씩 만들어집니다. 첫 행을 헤더로 사용 옵션을 켜면 맨 윗줄이 열 이름으로 쓰이고, 꺼두면 col1, col2, …처럼 자동으로 이름이 붙습니다. 출력은 입력하는 즉시 갱신되고 클릭 한 번으로 복사되므로, 데이터베이스 초기 데이터 입력, 마이그레이션 작성, 테스트 데이터 적재에 바로 쓸 수 있습니다. 데이터베이스에서 표준 SQL·PostgreSQL·MySQL / MariaDB·SQLite·SQL Server 중 하나를 고르면 그 데이터베이스 방식으로 이름에 따옴표를 붙이고, CREATE TABLE 문 포함을 켜면 열마다 자료형을 추론한 테이블 정의가 함께 나옵니다. 설정은 모두 페이지 주소에 담겨 새로고침해도 유지되고 즐겨찾기나 링크 복사로도 전해지며, 테이블 이름은 링크 복사로 만든 링크에만 담기고, CSV와 “키 열”, “열 형식” 선택은 이 페이지에만 남습니다.
올바른 따옴표 처리와 이스케이프
36이나 -7 같은 순수한 숫자는 따옴표 없이 출력되고, 나머지 값은 'Ada'처럼 작은따옴표로 감싸집니다. 값 안의 작은따옴표는 두 번 겹쳐 이스케이프되므로 O'Brien은 쿼리를 깨뜨리지 않고 'O''Brien'이 됩니다. 따옴표로 감싼 CSV 필드는 쉼표와 겹따옴표를 그대로 유지하고, 007처럼 앞자리가 0인 값은 손실 없이 따옴표로 감싸지며, 값이 부족한 행은 열과 값 개수가 맞도록 자동으로 채워집니다. 빈 셀은 ''로 쓰고, 빈 셀을 NULL로 쓰기를 켜면 NULL이 됩니다. 접혀 있는 “줄바꿈·날짜·숫자 형식”에서는 문과 문 사이를 LF 대신 윈도우용 CRLF로 잇고, 데이터 속 날짜를 일 먼저나 월 먼저로 읽어 ISO 날짜로 바꾸며(그러면 CREATE TABLE이 그 열을 DATE로 정할 수 있습니다), 1.234,56처럼 소수점이 쉼표인 숫자를 숫자로 읽습니다. 모든 칸이 빈 행은 변환하면서 저절로 빠지고, 변환 전에 표를 다듬으려면 CSV 행/열 바꾸기로 행과 열을 바꾸고, 중복 줄 제거·세기로 겹친 행을 지우고, 대소문자 변환기로 대소문자를 바꾸면 됩니다.
자주 묻는 질문
숫자와 문자는 어떻게 구분되나요?
순수한 정수나 소수(음수 가능, 앞자리 0 없음)는 36이나 3.14처럼 따옴표 없이 출력됩니다(CREATE TABLE 문 포함을 켜고 “열 형식”에서 그 열을 TEXT로 정하면 따옴표를 붙입니다). 그 외의 값 — 문자, 날짜, 007처럼 앞자리가 0인 값 — 은 입력한 그대로 저장되도록 작은따옴표로 감싸집니다. 빈 셀은 ''로 쓰는데, 빈 셀을 NULL로 쓰기를 켜면 NULL이 되고, CREATE TABLE 문 포함을 켰다면 숫자·날짜·참거짓 열의 빈 셀은 ''가 그 자료형의 값이 아니므로 항상 NULL이 됩니다.
값 안의 작은따옴표나 쉼표는 어떻게 처리되나요?
작은따옴표는 표준 SQL 문자열 규칙에 따라 두 번 겹쳐 이스케이프되어 O'Brien은 'O''Brien'이 됩니다. 값 안의 쉼표는 일반 스프레드시트 내보내기처럼 CSV에서 해당 필드를 큰따옴표로 감싸 두면 그대로 보존됩니다.
CREATE TABLE은 어떤 자료형을 쓰고, 여러 행을 INSERT 하나로 묶을 수 있나요?
CREATE TABLE 문 포함을 켜면 각 열은 “열 형식”에서 따로 고르지 않는 한 다음 순서에서 모든 값이 들어맞는 첫 자료형을 받습니다: BOOLEAN, INTEGER, 32비트 INTEGER에 담기지 않는 정수는 BIGINT, DECIMAL, DATE, 그 밖에는 TEXT입니다. SQL Server에서는 BIT와 NVARCHAR(MAX)로 쓰고, MySQL과 SQL Server에서는 DECIMAL의 자릿수를 데이터에 맞춰 정합니다. DROP TABLE IF EXISTS 문 추가와 CREATE TABLE IF NOT EXISTS 사용을 켜면 여러 번 실행해도 되는 스크립트가 됩니다. 묶기 옵션을 켜면 행마다 문을 쓰는 대신 VALUES 행을 여러 개 담은 INSERT 하나를 쓰고, SQL Server가 VALUES 목록 하나에 허용하는 수를 넘으면 새 문을 시작합니다.
UPDATE나 DELETE 문을 만들거나, 테이블에 기본 키를 두거나, 입력을 먼저 다듬을 수 있나요?
네. “만들 문”에서 INSERT 대신 UPDATE (키 기준) — 키가 맞는 행의 나머지 열을 모두 고치는 문 — 이나 DELETE (키 기준)을 고르고, “키 열”에서 헤더의 열 하나를 고르면 됩니다. 키 열을 고르기 전에는 고르라고 알려 줍니다. 같은 키 열은 CREATE TABLE의 PRIMARY KEY가 되는데, TEXT에 인덱스를 걸 수 없는 MySQL과 SQL Server에서는 문자 키를 길이가 정해진 VARCHAR·NVARCHAR로 씁니다. “맨 위에서 건너뛸 줄 수”는 헤더 위의 안내 줄을 떼어 내고, “변환할 최대 행 수”는 그만큼에서 멈추며, “열 이름 다듬기”는 공백을 _로 바꾸고 악센트를 뺍니다. 구분자에는 세로 막대·콜론·캐럿·공백이 있고, 자동 감지가 구분자를 추측합니다.
윈도우 줄바꿈으로 쓰거나, 유럽식 숫자와 일이 먼저인 날짜를 읽을 수 있나요?
네. 접혀 있는 “줄바꿈·날짜·숫자 형식”에서 고릅니다. 줄바꿈 방식은 문과 문 사이를 LF에서 윈도우용 CRLF로 바꾸며, 따옴표로 감싼 값 안의 줄바꿈은 데이터의 것이라 그대로 둡니다. 데이터 속 날짜는 일 먼저나 월 먼저로 쓴 날짜를 ISO 날짜로 읽어 CREATE TABLE이 그 열을 DATE로 정할 수 있게 하고, 없는 날짜는 쓰인 그대로 둡니다. 소수점이 쉼표인 숫자를 켜면 1.234,56을 숫자 1234.56으로 읽습니다. 모두 꺼진 채로 시작하므로 고르기 전까지 출력은 그대로입니다.