DevToolPal
한국어

CSV → SQL 변환기

CSV를 MySQL, PostgreSQL, SQLite, SQL Server용 CREATE TABLE과 INSERT 문으로 변환합니다. 열 타입은 자동으로 추론합니다.

로컬에서 실행, 업로드 없음

옵션

입력

0자 · 0 B

출력

0자 · 0 B

이 도구는

스프레드시트 데이터를 데이터베이스에 넣으려면 보통 테이블 정의와 긴 INSERT 문 목록을 직접 쓰면서 작은따옴표를 하나하나 이스케이프해야 합니다. 이 도구가 그 일을 대신합니다. CSV를 붙여 넣으면 CREATE TABLE 문과 배치로 묶인 여러 행 INSERT 문으로 이루어진, 바로 실행할 수 있는 SQL 스크립트를 얻을 수 있습니다.

RFC 4180에 따라 따옴표로 감싼 필드, 셀 안의 쉼표와 줄바꿈, 두 번 쓴 따옴표를 처리합니다. 문자열은 선택한 데이터베이스에 맞게 이스케이프되며, MySQL의 백슬래시와 SQL Server의 N'…' 유니코드 문자열도 지원합니다.

사용 방법

  1. CSV를 붙여 넣거나, .csv 또는 .tsv 파일을 업로드하거나, 예시 를 누릅니다.
  2. 테이블 이름 을 입력합니다. 스키마가 필요하면 public.orders나 dbo.orders처럼 점으로 구분합니다.
  3. 데이터베이스 를 고릅니다: MySQL / MariaDB, PostgreSQL, SQLite, SQL Server.
  4. INSERT당 행 수 를 고르고, 테이블이 이미 있다면 CREATE TABLE 을 끕니다.
  5. SQL을 복사하거나 .sql 파일로 내려받아 데이터베이스 클라이언트에서 실행합니다.

구분자는 자동으로 감지되며, 쉼표, 세미콜론, 탭, 파이프를 직접 지정할 수도 있습니다. 첫 행이 열 이름이 아니라 데이터라면 첫 행은 헤더 를 끄세요. 열 이름은 column_1, column_2 등이 됩니다.

예시

다음 CSV는:

id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false

PostgreSQL용으로 다음 스크립트가 됩니다:

CREATE TABLE "products" (
  "id" INTEGER,
  "name" TEXT,
  "price" NUMERIC(3, 2),
  "in_stock" BOOLEAN
);

INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
  (1, 'Ada''s Tea', 4.50, TRUE),
  (2, 'Coffee', NULL, FALSE);

Ada's의 작은따옴표는 두 번 쓰이고, 빈 가격은 NULL이 되며, 숫자와 불리언은 따옴표 없이 쓰입니다.

타입과 방언

  • MySQL / MariaDB: 백틱 식별자, INT, DECIMAL, BOOLEAN, DATE, DATETIME, VARCHAR(255) 또는 TEXT. 문자열의 백슬래시는 이스케이프됩니다.
  • PostgreSQL: 큰따옴표 식별자, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMP, TEXT.
  • SQLite: 큰따옴표 식별자와 SQLite 저장 클래스 INTEGER, REAL, TEXT. 불리언은 1과 0으로 씁니다.
  • SQL Server: 대괄호 식별자, INT, DECIMAL, BIT, DATE, DATETIME2, NVARCHAR. 문자열은 N'…' 형식이고 INSERT당 최대 1000행입니다.
  • 빈 셀은 NULL이 됩니다. 빈 셀을 NULL로 를 끄면 텍스트 열에는 빈 문자열이 남습니다.
  • 운영 데이터에 실행하기 전에 추론된 타입을 확인하세요. 예시 데이터에 작은 숫자만 있던 열은 나중에 더 넓은 타입이 필요할 수 있습니다.

자주 묻는 질문

› 어떤 데이터베이스를 지원하나요?

MySQL(및 MariaDB), PostgreSQL, SQLite, Microsoft SQL Server입니다. 선택한 데이터베이스에 따라 테이블과 열 이름을 감싸는 방식, 문자열 이스케이프, 사용할 열 타입, 불리언 표기가 달라집니다.

› 열 타입은 어떻게 정해지나요?

각 열을 살펴서 정수는 INT 또는 BIGINT, 소수는 정밀도가 충분한 DECIMAL, true/false는 BOOLEAN(SQL Server는 BIT), ISO 날짜는 DATE 또는 DATETIME, 나머지는 텍스트 타입이 됩니다. 우편번호처럼 앞에 0이 붙은 숫자는 텍스트로 남습니다. 타입 감지를 끄면 모든 열이 텍스트가 됩니다.

› SQL Server는 왜 INSERT당 1000행으로 제한되나요?

SQL Server는 1000행이 넘는 VALUES 목록을 거부하므로, 이 방언에서는 더 큰 배치 크기가 1000으로 제한됩니다. 다른 데이터베이스는 더 큰 배치도 받아들이지만, 문장당 100~1000행이 속도와 문장 길이 사이에서 균형이 좋습니다.

› CSV가 업로드되나요?

아니요. 파싱과 SQL 생성은 모두 브라우저에서 이루어지므로 데이터가 기기 밖으로 나가지 않습니다.