CSV → SQL 변환기

CSV 데이터를 데이터베이스에 넣으려면 보통 로더 도구를 띄우거나 로컬 파일에서만 동작하는 COPY / LOAD DATA INFILE 명령을 써야 합니다. 작은 데이터셋, 수십, 수백, 수천 행, 에는 어떤 SQL 콘솔에든 붙여넣을 수 있는 평범한 INSERT 문이 종종 더 빠릅니다. 이 도구는 CSV와 테이블 이름을 받아, 백틱으로 감싼 식별자와 작은따옴표로 감싼 안전하게 실행 가능한 값으로 행마다 INSERT 하나씩을 만듭니다.

SQL이 조립되는 방식

  1. 1

    CSV 붙여넣기

    선택적 헤더 행이 있는 표준 CSV. 파서는 따옴표 안에 구분자가 있는 셀을 처리합니다.

  2. 2

    테이블 이름 설정

    테이블 이름의 비영숫자 문자는 밑줄로 대체되며, 비어 있으면 `my_table`로 폴백합니다.

  3. 3

    열은 헤더에서

    헤더 모드가 켜져 있으면 1행이 열 목록이 됩니다. 그렇지 않으면 열은 `column_1`, `column_2` 등으로 명명됩니다.

  4. 4

    데이터 행마다 INSERT 하나

    각 행이 `INSERT INTO table (cols) VALUES (...)`가 됩니다. 값은 작은따옴표로 감싸이고 내부 따옴표는 두 배가 됩니다.

방언, 인용, 그리고 다른 것을 써야 할 때

생성기는 식별자에 백틱, 값에 작은따옴표를 쓰는 MySQL 스타일 SQL을 대상으로 합니다. 대부분의 데이터베이스는 약간의 수정으로 이를 받아들입니다.

방언 치트 시트

데이터베이스 식별자 인용 비고
MySQL 백틱 수정 없이 동작.
MariaDB 백틱 수정 없이 동작.
PostgreSQL 큰따옴표 실행 전에 `"로 바꾸세요.
SQLite 큰따옴표 `"로 바꾸거나 식별자 인용을 빼세요.
SQL Server 대괄호 `[]로 바꾸세요. 유니코드는 N'...' 주의.

값이 이스케이프되는 방식

모든 값은 작은따옴표로 감싸이고 안에 든 작은따옴표는 두 배가 됩니다(O'Brien'O''Brien'이 됨). 이것이 SQL-92 방식이며 모든 주류 데이터베이스에서 동작합니다. 변환기는 타입 캐스팅을 하지 않습니다, 모든 것이 문자열 리터럴로 출력되므로, 열이 INT일 때 데이터베이스의 암시적 변환이 '42'를 정수로 바꿉니다.

깔끔한 임포트를 위한 팁

  • 테이블을 먼저 만드세요. 변환기는 CREATE TABLE이 아니라 INSERT 문만 내보냅니다. 직접 정의하거나 ORM에서 생성한 스키마와 짝지으세요.
  • 큰 파일은 청크로. SQL 클라이언트에 문장 크기 제한이 있으면 한 번에 500-1000행씩 붙여넣으세요.
  • 트랜잭션으로 감싸세요. 수백 행이 넘으면 붙여넣기를 BEGIN;COMMIT;(또는 START TRANSACTION; / COMMIT;)로 감싸세요. 각 문장을 자동 커밋하는 것보다 훨씬 빠릅니다.

SQL 생성을 건너뛸 때

파일이 ~50,000행을 넘으면 네이티브 벌크 로더(Postgres의 COPY, MySQL의 LOAD DATA INFILE, SQL Server의 bcp)가 스크립트된 INSERT보다 한 자릿수 더 빠릅니다. 이 도구는 빠른 임포트, 테스트 데이터 시딩, 일회성 마이그레이션용입니다.

자주 묻는 질문

아니요. INSERT 문만 내보냅니다. 미리 CREATE TABLE로 스키마를 직접 정의하세요, 그래야 변환기에게 추측을 맡기지 않고 열 타입, 길이, 제약을 통제할 수 있습니다.

한 가지만 바꾸면 됩니다: 테이블과 열 이름의 백틱 식별자 인용을 큰따옴표로 바꾸세요. 값은 작은따옴표로 감싸여 어떤 SQL-92 방언에서도 수정 없이 실행됩니다.

값 안의 작은따옴표는 두 배가 됩니다(O''Brien). 이것이 표준 SQL 이스케이프입니다. 백슬래시, 퍼센트 기호, 밑줄은 문자 그대로 통과합니다, LIKE 패턴에서만 특수해집니다.

네. SQL을 만들기 위해 CSV가 서버로 전송됩니다. 저장되지 않으며 페이지 링크에도 추가되지 않습니다.

관련 도구