본문으로 건너뛰기
AZ Tools

JSON → SQL INSERT 생성기

JSON 배열(또는 단일 객체) 붙여넣고 즉시 실행 가능한 SQL insert 출력. 컬럼은 모든 키의 합집합; 컬럼 없는 행은 NULL. 문자열은 작은따옴표 이스케이프, 숫자·불은 리터럴, 중첩 객체·배열은 JSON 직렬화. 선택적 `ON CONFLICT`(Postgres·SQLite) 또는 `ON DUPLICATE KEY UPDATE`(MySQL)로 출력을 동기화 작업에 바로 투입.

SQL(3)
INSERT INTO "users" ("id", "name", "email", "verified", "joined")
VALUES
  (1, 'Alice', 'alice@example.com', TRUE, '2024-01-15'),
  (2, 'Bob', 'bob@example.com', FALSE, '2024-03-22'),
  (3, 'Carol', NULL, TRUE, '2024-06-01');

문자열은 작은따옴표 이중화로 이스케이프 — 네 가지 방언 모두 안전.

사용법

  1. JSON 객체 배열(또는 단일 객체) 붙여넣기.
  2. 테이블 이름·SQL 방언 설정.
  3. 다행 VALUES 토글로 단일 문, 끄면 행마다 INSERT. ON CONFLICT·ON DUPLICATE KEY UPDATE 원하면 upsert 토글.

자주 묻는 질문

중첩 객체 처리?
JSON 직렬화 후 인용 문자열로 삽입. PostgreSQL·MySQL의 `JSON`/`JSONB` 컬럼은 바로 수용; SQLite는 TEXT로.
다행 vs 행별 INSERT 차이?
다행은 단일 `INSERT INTO ... VALUES (…), (…), (…);` — 대량 로드에서 훨씬 빠름. 행별은 N개 문 — 개별 행 주석 처리·부분 실패 예상 시 편함.
이 이스케이프만으로 SQL을 안전하게 실행할 수 있나?
작은따옴표를 이스케이프해서 구문상 올바른 문장을 만들 뿐이고, 적대적인 입력에 대해 안전하다는 뜻은 아니다. 생성된 SQL은 그냥 텍스트다. 실행하기 전에 읽어보라. 통제할 수 없는 곳에서 온 데이터라면 생성된 스크립트를 콘솔에 붙여넣지 말고, 매개변수화된 문장이나 COPY, LOAD DATA 같은 대량 적재 도구로 넣어라.
숫자가 따옴표에 묶여 나오거나 ID의 끝자리가 사라진 이유는?
타입은 테이블이 아니라 JSON을 따른다. JSON에 "42"처럼 문자열로 적혀 있으면 컬럼이 정수여도 따옴표 붙은 리터럴이 나온다. SQL에서 캐스팅하거나 JSON을 고쳐야 한다. 큰 식별자는 반대쪽 함정이다. JSON 숫자로 도착했다면 이 도구에 오기도 전에 이미 끝자리를 잃었을 수 있다. ID를 문자열로 실어 보내야 하는 이유가 이것이다.

관련 도구