logo
GeekFormat

SQL 변환기

GeekFormat 온라인 SQL 변환기는 SQL INSERT 문과 CREATE TABLE 스크립트를 JSON, CSV, TSV, XML, YAML, HTML 표, Markdown 표, JSON Lines 등 다양한 형식으로 한 번에 변환합니다. 여러 INSERT 문과 다중 값 튜플 일괄 파싱을 지원하고 숫자, 문자열, NULL, 불리언, 16진수 리터럴을 자동 인식합니다. MySQL, PostgreSQL, SQLite, SQL Server 방언의 따옴표 스타일을 지원하며 여러 테이블 데이터는 개별 출력하거나 병합할 수 있습니다. 반대 방향으로 INSERT 문을 재생성하고 방언을 전환할 수도 있습니다. 모든 처리는 브라우저에서 로컬로 이루어지며 데이터는 기기를 떠나지 않습니다.

관련 추천

SQL 변환에 대해: SQL 스크립트를 JSON/CSV/XML 등 형식으로 변환

SQL 변환(SQL Conversion)은 SQL 스크립트에서 데이터를 추출해 JSON, CSV, XML, YAML, HTML, Markdown 등 다른 데이터 형식으로 재구성하는 과정을 말합니다. SQL(Structured Query Language, 구조화 질의어)은 관계형 데이터베이스의 표준 질의 언어이며 데이터베이스 내보내기 도구(mysqldump, pg_dump 등)는 일반적으로 데이터를 INSERT 문 형태의 SQL 스크립트로 내보냅니다. 이 형식은 데이터베이스 가져오기에는 편리하지만 프로그램 읽기, 데이터 분석, 시스템 간 교환에는 불편하므로 더 범용적인 형식으로 변환이 필요합니다.

일반적인 SQL 데이터 내보내기 스크립트에는 두 종류의 문이 포함됩니다: CREATE TABLE은 테이블 구조(열 이름, 데이터 타입, 제약 조건)를 정의하고 INSERT INTO ... VALUES (...)가 실제 데이터를 삽입합니다. 본 도구는 이 두 종류의 문을 파싱하여 CREATE TABLE에서 열 정의와 타입 정보를, INSERT에서 실제 데이터 행을 추출한 다음 사용자가 선택한 형식으로 재구성하여 출력합니다. 전체 파싱 과정은 브라우저 로컬에서 완료되며 어떤 백엔드 서비스에도 의존하지 않습니다.

왜 SQL을 다른 형식으로 변환해야 할까요? SQL은 범용적이지만 다음 시나리오에서는 불편합니다: 첫째, 프런트엔드 프로그램은 SQL 파서를 도입할 필요 없이 JSON을 읽는 것이 훨씬 쉽습니다. 둘째, Excel, Google Sheets 등 스프레드시트 소프트웨어는 SQL이 아닌 CSV를 기본 지원합니다. 셋째, 설정 파일과 문서 시나리오에서는 YAML, Markdown이 SQL보다 읽기 쉽습니다. 넷째, 시스템 간 데이터 교환에는 XML이나 JSON이 중립 형식으로 자주 사용됩니다. SQL을 이러한 범용 형식으로 변환하면 더 많은 도구와 언어가 데이터를 직접 소비할 수 있습니다.

본 도구의 SQL 파서는 직접 작성되었으며 INSERT 문과 CREATE TABLE 문 파싱에 집중합니다. INSERT 문의 경우 단일 값 튜플(INSERT INTO t (a,b) VALUES (1,2))과 다중 값 튜플(INSERT INTO t (a,b) VALUES (1,2), (3,4), (5,6)) 두 가지 구문을 지원하며 열 이름에 따라 데이터를 자동 매핑합니다. CREATE TABLE 문의 경우 열 정의, 데이터 타입(VARCHAR(255), INT, DECIMAL(10,2) 등 괄호 길이 포함), NOT NULL, PRIMARY KEY, IF NOT EXISTS 등 제약 조건과 절을 파싱하며 중첩 괄호를 올바르게 처리해 잘못된 분할을 방지합니다.

타입 인식은 SQL 변환의 핵심입니다. 도구는 값의 리터럴 형식에 따라 타입을 자동 판단합니다: 작은따옴표나 큰따옴표로 감싸진 것은 문자열, NULL(대소문자 구분 없음)은 빈 값, TRUE/FALSE는 불리언, 0x..., X'...', B'...'은 16진수 리터럴, 순수 숫자(부호, 소수점, 과학적 표기법 포함)는 숫자로 간주됩니다. 이러한 자동 타입 인식을 통해 변환된 JSON, CSV 등 형식이 원래 데이터 의미를 보존하여(숫자 1이 문자열 "1"이 되지 않음) 하위 프로그램이 올바르게 처리할 수 있습니다.

데이터베이스 방언마다 따옴표 스타일이 다른 것은 SQL 파싱의 흔한 함정입니다. MySQL은 식별자(테이블 이름, 열 이름)를 역따옴표(`)로 감싸고 PostgreSQL은 큰따옴표("), SQL Server/T-SQL은 대괄호([]), 표준 SQL도 큰따옴표를 사용합니다. 본 도구의 unquoteIdentifier 함수는 이러한 따옴표를 자동으로 인식하고 제거하며 따옴표 내 이스케이프(`` → `, "" → ")도 처리합니다. SQL 재생성 모드에서는 대상 방언에 따른 따옴표 스타일로 INSERT 문을 다시 생성할 수 있습니다.

SQL 문자열 이스케이프는 또 다른 핵심 기술 포인트입니다. SQL 표준은 문자열 내 작은따옴표를 두 번 써서 이스케이프하고('It''s'는 It's를 나타냄), MySQL은 백슬래시 이스케이프(\n, \t, \', \", \\, \0, \Z 등)도 지원합니다. 본 도구의 문자열 파서는 두 가지 이스케이프 메커니즘을 모두 처리하여 원래 문자열 내용을 올바르게 복원합니다. CSV로 변환할 때는 RFC 4180 표준에 따라 쉼표, 따옴표, 줄바꿈이 포함된 필드를 다시 이스케이프하고 XML/HTML로 변환할 때는 &, <, >, ", ' 등 특수 문자를 이스케이프합니다.

순수 프런트엔드 처리는 본 도구의 핵심 설계 원칙입니다. 모든 SQL 파싱과 데이터 변환은 브라우저의 JavaScript 엔진에서 실행되며 어떤 데이터도 서버로 전송되지 않습니다. 즉 SQL 스크립트에 사용자 개인정보, 상업적으로 민감한 정보, 내부 데이터베이스 구조가 포함되어 있어도 외부로 누출되지 않습니다. 이 설계는 프로덕션 데이터베이스 내보내기 처리에 특히 적합하며 데이터 컴플라이언스 우려가 없습니다. 또한 프런트엔드 처리는 네트워크 지연이 없어 변환 속도는 기기의 CPU와 메모리에만 제한됩니다.

본 도구는 기존 명령줄 SQL 변환 도구(sql2csv, sqlparser 등)와 비교해 몇 가지 장점이 있습니다: 설치나 환경 설정이 필요 없이 페이지를 열면 바로 사용 가능, 시각적 인터페이스로 변환 결과 실시간 미리보기, 여러 출력 형식을 한 번에 전환, 샘플 데이터와 도움말 문서 내장, 모바일 반응형 디자인으로 언제 어디서나 사용 가능 등입니다. 반면 본 도구는 데이터 추출에 집중하며 복잡한 방언 차이(PostgreSQL의 JSONB 연산자, MySQL의 ON DUPLICATE KEY UPDATE 등)와 고급 기능(저장 프로시저, 함수, 트리거)은 처리하지 않습니다. 이러한 필요가 있다면 데이터베이스 네이티브 도구나 전용 ETL 플랫폼을 사용하는 것을 권장합니다.

SQL 변환 도구를 사용할 때 몇 가지 모범 사례에 유의하세요: 첫째, 변환 전에 SQL 스크립트가 실제 데이터(INSERT 문)를 포함하고 있는지, 쿼리문(SELECT)만 있는 것이 아닌지 확인하세요. SELECT는 파싱되지 않습니다. 둘째, 여러 테이블이 있는 SQL 스크립트는 "다중 테이블 개별 출력"을 활성화해 테이블 구조 정보를 보존하는 것을 권장합니다. 셋째, 한글이 포함된 SQL을 처리할 때 CSV 출력에서 "BOM 포함"을 활성화해 Excel이 인코딩을 올바르게 인식하도록 하세요. 넷째, 대용량 SQL dump를 처리할 때는 "보기 좋게 출력"을 꺼서 출력 크기를 줄이세요. 다섯째, 교차 데이터베이스 마이그레이션 시 "SQL 재생성" 모드로 방언을 전환할 수 있지만 복잡한 타입(PostgreSQL 배열, JSONB 등)은 수동 조정이 필요할 수 있습니다.

사용 사례

  • mysqldump 또는 pg_dump로 내보낸 SQL 스크립트를 JSON으로 변환하여 API 데이터 가져오기나 프런트엔드 데이터 소비에 사용.
  • 데이터베이스 INSERT 문을 CSV 파일로 변환하여 Excel/WPS/Google Sheets로 가져와 데이터 분석이나 보고서 작성.
  • SQL 백업 스크립트에서 데이터를 추출해 XML로 변환하여 시스템 간 데이터 교환이나 SOAP 인터페이스 연동에 사용.
  • SQL 데이터를 YAML 설정 형식으로 변환하여 Ansible, Docker Compose, Kubernetes 등의 설정 시나리오에 활용.
  • SQL 쿼리 결과(INSERT로 내보낸)를 HTML 표로 변환하여 웹 페이지에 직접 삽입해 데이터 표시.
  • SQL 데이터를 Markdown 표로 변환하여 README, 문서 사이트, 기술 블로그에 붙여넣어 샘플 데이터 표시.
  • CREATE TABLE + INSERT 전체 스크립트에서 데이터를 추출해 JSON Lines로 변환하여 Elasticsearch 일괄 인덱싱에 사용.
  • 데이터베이스 마이그레이션 시 MySQL INSERT 스크립트를 PostgreSQL 방언의 INSERT로 재생성하여 교차 데이터베이스 데이터 가져오기에 활용.
  • 테스트 데이터 관리: 테스트용 SQL 시드 데이터를 JSON 설정으로 변환하여 프로그램이 읽고 버전 관리하기 쉽게 만듦.
  • 교육 데모: SQL 문을 여러 형식으로 변환해 비교하여 학습자가 다양한 데이터 표현 형식의 차이를 이해하도록 도움.
  • ETL 흐름 전처리: 상류 SQL dump를 구조화된 JSON/CSV로 변환하여 하류 ETL 파이프라인의 입력으로 사용.
  • 데이터 분석: SQL 내보내기에서 핵심 데이터를 추출해 CSV로 변환하고 pandas, R 등의 도구로 통계 분석 수행.
  • 고객 인도: 데이터베이스 내보내기를 보다 범용적인 JSON 또는 CSV 형식으로 변환하여 비기술자에게 전달.
  • 데이터 아카이빙: 과거 데이터베이스의 INSERT 스크립트를 가독성이 더 좋은 YAML이나 Markdown으로 변환하여 보관.

이용 방법

  1. 왼쪽 입력 상자에 SQL 스크립트를 붙여넣거나 "SQL 업로드" 버튼을 클릭하여 .sql/.txt 파일을 선택합니다.
  2. "예시" 버튼을 클릭하여 내장된 SQL 샘플(CREATE TABLE과 다중 테이블 INSERT 포함)을 불러옵니다.
  3. 오른쪽 출력 패널 상단의 형식 드롭다운에서 대상 형식(JSON, CSV, XML, YAML 등 9종)을 선택합니다.
  4. "설정" 버튼을 클릭하여 변환 옵션을 조정합니다: 보기 좋게 출력, BOM 포함, 다중 테이블 개별 출력, CSV 구분자, JSON 루트 키 이름, SQL 방언 등.
  5. "변환" 버튼을 클릭하여 변환을 실행합니다. 결과는 오른쪽 패널에 자동 표시되고 하단 상태 표시줄에 테이블 수, 행 수, INSERT 수 등의 통계가 표시됩니다.
  6. "복사"를 클릭하여 변환 결과를 클립보드에 복사하거나 "다운로드"를 클릭하여 결과를 해당 형식의 파일(result.json, result.csv 등)로 저장합니다.
  7. 출력 형식을 전환하면 자동으로 다시 변환되므로 변환 버튼을 다시 클릭할 필요가 없습니다.

주요 기능

  • 9가지 출력 형식: JSON, JSON Lines, CSV, TSV, XML, YAML, HTML 표, Markdown 표, SQL 재생성. 형식을 전환하면 자동으로 다시 변환됩니다.
  • INSERT 문 파싱: INSERT INTO ... VALUES (...) 구문을 자동 인식하고 단일 행 및 다중 값 튜플 일괄 삽입(하나의 INSERT에 여러 행)을 지원합니다.
  • CREATE TABLE 인식: CREATE TABLE 문을 파싱하여 열 정의, 데이터 타입, NOT NULL, PRIMARY KEY 등 제약 조건 정보를 추출하며 필드 타입 추론에 활용할 수 있습니다.
  • 다중 테이블 데이터 처리: 스크립트에 여러 테이블이 포함된 경우 테이블별로 개별 출력(테이블 이름 구분 표시 포함)하거나 병합하여 내보낼 수 있으며 각 테이블의 열과 행을 자동 집계합니다.
  • 자동 타입 인식: 숫자(정수/부동소수점), 문자열, NULL, 불리언(TRUE/FALSE), 16진수 리터럴(0x..., X'...', B'...')을 지능적으로 인식하여 원래 타입 의미를 보존합니다.
  • 다중 방언 따옴표 호환: MySQL 역따옴표(`), PostgreSQL 큰따옴표("), SQL Server 대괄호([]) 및 표준 따옴표를 인식하고 식별자 따옴표를 자동으로 제거합니다.
  • SQL 문자열 이스케이프 해제: SQL 표준 이스케이프('' → ')와 MySQL 백슬래시 이스케이프(\n, \r, \t, \0, \', \")를 처리하여 특수 문자가 포함된 문자열을 올바르게 복원합니다.
  • SQL 방언 재생성: MySQL, PostgreSQL, SQLite 또는 표준 SQL 방언으로 INSERT 문을 다시 생성할 수 있으며 테이블 이름 사용자 지정과 CREATE TABLE 생성 옵션을 지원합니다.
  • 유연한 CSV 설정: 구분자(쉼표/세미콜론/Tab/파이프), UTF-8 BOM 헤더 포함 여부(Excel 호환), 들여쓰기 보기 좋게 처리 여부를 선택할 수 있으며 RFC 4180 표준을 준수합니다.
  • 다양한 JSON 구조: 테이블별 그룹화(tables 루트 키), 순수 데이터(data 루트 키), 순수 배열(루트 키 없음)의 3가지 JSON 구조를 출력하여 다양한 소비 시나리오에 대응합니다.
  • 실시간 통계 표시: 변환 후 파싱된 테이블 수, 전체 행 수, INSERT 문 수, 출력 문자 수를 실시간으로 표시하여 변환 결과의 완전성을 확인할 수 있습니다.
  • 파일 업로드 및 다운로드: .sql/.txt/.csv/.tsv/.json 파일을 업로드하여 직접 파싱할 수 있고 변환 결과를 해당 형식의 파일(.json, .csv, .yaml 등)로 다운로드할 수 있습니다.
  • 기록 관리: 왼쪽 패널에 내장된 기록 사이드바가 최근 변환한 SQL 입력을 자동 저장하여 이전 스크립트를 빠르게 다시 불러올 수 있습니다.
  • 모바일 반응형: 스마트폰에서는 입력/결과 탭 전환 레이아웃으로 자동 전환되고 데스크톱에서는 드래그 가능한 듀얼 패널 분할을 사용하며 모든 상호작용이 모바일에서도 사용 가능합니다.
  • 순수 브라우저 로컬 처리: 모든 파싱과 변환은 브라우저 JavaScript에서 완료되어 서버 요청이 필요 없으며 SQL 데이터가 기기를 떠나지 않아 민감 정보를 포함한 데이터베이스 내보내기 처리에 적합합니다.

자주 묻는 질문

SQL을 어떤 형식으로 변환할 수 있나요?

본 도구는 9가지 출력 형식을 지원합니다: JSON(구조화된 배열), JSON Lines(한 줄에 하나의 JSON 객체), CSV(쉼표 구분), TSV(Tab 구분), XML(태그가 있는 표준 XML 문서), YAML(설정 형식), HTML 표(스타일 포함, 브라우저에서 직접 조회 가능), Markdown 표(문서 구문), SQL 재생성(INSERT 문을 다시 생성하고 방언 전환 가능). 오른쪽 형식 드롭다운에서 전환하면 자동으로 다시 변환됩니다.

어떤 SQL 문을 파싱할 수 있나요?

주로 INSERT INTO ... VALUES (...) 문을 파싱하여 데이터를 추출하고 CREATE TABLE 문을 인식하여 열 정의와 타입 정보를 가져옵니다. 단일 INSERT, 다중 값 튜플 INSERT(하나의 INSERT에 여러 행), 여러 INSERT 문, 여러 테이블에 걸친 INSERT를 지원합니다. 주석(-- 단일 행, /* */ 여러 행, # MySQL 단일 행)은 자동으로 제거되어 파싱에 영향을 주지 않습니다.

어떤 데이터베이스 방언을 지원하나요?

파싱 시 MySQL(역따옴표 `), PostgreSQL(큰따옴표 "), SQL Server(대괄호 []) 및 표준 SQL의 식별자 따옴표 스타일을 지원하며 따옴표를 자동으로 제거하여 원래 열 이름과 테이블 이름을 복원합니다. SQL 재생성 모드에서는 MySQL, PostgreSQL, SQLite 또는 표준 SQL 방언을 선택해 INSERT를 다시 생성할 수 있으며 방언마다 따옴표와 불리언 표현이 다릅니다.

여러 테이블이 포함된 SQL 스크립트는 어떻게 처리되나요?

도구는 테이블 이름별로 INSERT 데이터를 자동 집계합니다. 설정에서 "다중 테이블 개별 출력"을 켜면 CSV/HTML/Markdown 등 표 형식은 테이블별로 분할 출력(테이블 이름 표시 포함)되고 JSON/XML 등 구조화된 형식은 테이블 이름으로 그룹화됩니다. 이 옵션을 끄면 CSV는 첫 번째 테이블의 데이터만 출력하고 JSON은 "루트 키 없음"으로 순수 배열 출력을 선택할 수 있습니다.

SQL의 NULL, 불리언, 특수 문자는 어떻게 처리되나요?

도구는 NULL(대소문자 구분 없음), TRUE/FALSE 불리언, 16진수 리터럴(0x..., X'...', B'...'), 정수 및 부동소수점 수를 자동 인식합니다. 문자열은 SQL 표준 이스케이프('' → ')와 MySQL 백슬래시 이스케이프(\n, \t, \' 등)를 처리하여 줄바꿈, 따옴표, 특수 문자가 포함된 원래 내용을 올바르게 복원합니다. CSV 출력 시 RFC 4180 표준에 따라 쉼표, 따옴표, 줄바꿈이 포함된 필드를 따옴표로 이스케이프합니다.

변환된 JSON 구조는 어떻게 되나요?

JSON 출력은 3가지 구조를 지원합니다: "tables 루트 키"(테이블 이름으로 그룹화, 다중 테이블 시나리오에 권장), "data 루트 키"(통합 래퍼), "루트 키 없음"(순수 배열, 단일 테이블이나 스트림 처리에 적합). 예를 들어 단일 테이블 users는 [{"id":1,"name":"Alice"},...] 배열로 변환되고 여러 테이블은 테이블 이름별로 {"users":[...],"orders":[...]}로 그룹화됩니다. 설정에서 선택할 수 있습니다.

업로드한 SQL 파일이 서버에 저장되나요?

아닙니다. 본 도구는 순수 프런트엔드 애플리케이션으로 모든 파싱과 변환은 브라우저의 로컬 JavaScript에서 완료되며 SQL 내용이나 변환 결과를 어떤 서버로도 전송하지 않습니다. 업로드된 파일은 FileReader를 통해 브라우저 내에서 직접 읽히며 페이지를 닫으면 데이터가 자동으로 삭제됩니다. 사용자 개인정보나 상업적으로 민감한 정보가 포함된 데이터베이스 내보내기 처리에 적합합니다.

SQL Server의 대괄호 식별자를 지원하나요?

지원합니다. 도구는 SQL Server/T-SQL 스타일의 대괄호 식별자(예: [users], [order details])를 인식하고 대괄호를 제거하여 원래 이름을 복원합니다. MySQL 역따옴표, PostgreSQL 큰따옴표도 지원됩니다. SQL 재생성 모드에서 다른 방언을 선택하면 해당 따옴표 스타일로 INSERT가 다시 생성됩니다.

SQL 스크립트를 변환해도 데이터가 출력되지 않는 이유는?

SQL에 INSERT INTO ... VALUES (...) 문이 포함되어 있는지 확인하세요. 본 도구는 INSERT 문만 파싱하여 데이터를 추출하며 SELECT 쿼리문은 출력을 생성하지 않습니다. CREATE TABLE 문만 있는 경우 "CREATE TABLE만 감지되었으며 변환할 데이터 행이 없습니다"라는 경고가 표시됩니다. SQL 스크립트가 쿼리문이 아닌 데이터 내보내기(dump)인지 확인하세요.

저장 프로시저, 함수, 트리거를 지원하나요?

지원하지 않습니다. 본 도구는 데이터 추출에 집중하며 INSERT 문과 CREATE TABLE 문만 파싱합니다. 저장 프로시저(CREATE PROCEDURE), 함수(CREATE FUNCTION), 트리거(CREATE TRIGGER), 뷰(CREATE VIEW) 등 데이터베이스 객체 정의는 파싱되지 않습니다. 이러한 객체를 마이그레이션하려면 pg_dump, mysqldump 등 데이터베이스 네이티브 도구를 사용하는 것을 권장합니다.

변환된 CSV 파일을 Excel에서 열면 한글이 올바르게 표시되나요?

네. 설정에서 "BOM 포함"을 활성화하면 CSV 파일에 UTF-8 BOM 헤더(\uFEFF)가 포함되어 Excel이 인코딩을 올바르게 인식하고 한글 등 비 ASCII 문자를 표시합니다. BOM이 없으면 일부 Excel 버전에서 UTF-8 한글이 깨져 보일 수 있습니다. Google Sheets, WPS 등 최신 스프레드시트 소프트웨어는 보통 BOM 없이도 올바르게 인식합니다.

SQL 스크립트에서 INSERT 문을 반대로 재생성할 수 있나요?

할 수 있습니다. "SQL 재생성" 출력 형식을 선택하면 INSERT 문을 다시 생성할 수 있습니다. 대상 방언(MySQL/PostgreSQL/SQLite/표준 SQL) 선택, 테이블 이름 사용자 지정, CREATE TABLE 문 옵션 생성(데이터에서 열 타입 INT/BIGINT/FLOAT/VARCHAR/TEXT/BOOLEAN 자동 추론)을 지원합니다. MySQL 스크립트를 PostgreSQL 방언으로 재생성하거나 테이블 이름을 변경한 후 데이터베이스에 다시 가져올 때 유용합니다.

JSON Lines와 JSON의 차이는 무엇인가요? 언제 JSON Lines를 사용해야 하나요?

JSON 출력은 완전한 JSON 배열([{...},{...}])로 프로그램이 한 번에 메모리에 로드하기에 적합합니다. JSON Lines(NDJSON이라고도 함)는 한 줄에 하나의 독립적인 JSON 객체를 배치하는 형식으로 스트림 처리, 대용량 데이터 가져오기, Elasticsearch bulk API, 로그 분석 등 한 줄씩 읽어 많은 메모리를 사용하지 않는 시나리오에 적합합니다. 본 도구는 두 형식을 자유롭게 전환할 수 있습니다.

변환 결과가 원래 열 순서를 보존하나요?

보존합니다. 도구는 INSERT 문에 지정된 열 순서대로 열 이름을 보존합니다. INSERT에 열 이름이 명시되지 않은 경우(예: INSERT INTO t VALUES (...)) 첫 번째 행의 값 수에 따라 col_1, col_2 등의 자리 표시자 열 이름을 생성합니다. 여러 테이블은 각각의 열 순서를 독립적으로 보존하며 병합 출력 시 테이블별로 표시됩니다.

도구가 어느 정도 크기의 SQL 파일까지 처리할 수 있나요?

이론상 하드 상한은 없으며 브라우저 메모리에 의존합니다. 수십 MB 크기의 SQL dump 파일은 일반적으로 원활하게 처리할 수 있지만 수백 MB의 초대형 파일은 브라우저 메모리 부족으로 느려질 수 있습니다. 초대형 파일을 처리할 때는 여러 작은 파일로 분할해 일괄 변환하거나 "보기 좋게 출력"을 꺼서 메모리 사용량을 줄이는 것을 권장합니다. 모든 파싱은 브라우저 로컬에서 완료되어 네트워크 전송 제한을 받지 않습니다.

문제 해결

변환 후 출력 데이터가 없나요?

원인 1: SQL 스크립트에 SELECT 쿼리문만 포함되어 있습니다. 본 도구는 INSERT 문만 파싱하여 데이터를 추출하며 쿼리를 실행하지 않습니다. 해결: mysqldump/pg_dump로 데이터를 INSERT 문으로 내보내세요. 원인 2: SQL 스크립트에 CREATE TABLE만 있고 데이터 행이 없는 경우 경고가 표시됩니다. 원인 3: INSERT 문 구문이 비표준(VALUES 키워드 누락 등)입니다. SQL 구문의 정확성을 확인하세요. 원인 4: SQL의 모든 내용이 주석 처리(-- 또는 /* */)되어 있습니다. 주석 표시가 잘못 추가되지 않았는지 확인하세요.

CSV를 Excel에서 열면 한글이 깨지나요?

Excel은 기본적으로 CSV를 GBK 인코딩으로 인식하여 UTF-8 인코딩의 한글이 깨져 보입니다. 해결: "설정"에서 "BOM 포함"을 활성화하면 출력되는 CSV 파일에 UTF-8 BOM 헤더(\uFEFF)가 포함되어 Excel이 UTF-8 인코딩을 올바르게 인식합니다. 이미 BOM 없는 CSV를 내보낸 경우 메모장으로 "BOM 포함 UTF-8"으로 다른 이름으로 저장한 후 Excel에서 열거나 Google Sheets, WPS 등 최신 스프레드시트 소프트웨어로 직접 열어보세요.

JSON에서 숫자가 문자열로 변하나요?

원인: SQL의 숫자가 따옴표로 감싸져 있습니다(예: 123이 아닌 '123'). 도구가 문자열로 파싱합니다. 해결: SQL 스크립트에서 숫자가 따옴표로 감싸져 있는지 확인하고 따옴표를 제거하세요. 원래 데이터가 그런 형식(ZIP 우편번호는 종종 문자열로 저장됨)이라면 예상된 동작입니다. 문자열 의미를 보존하면 선행 0 손실을 방지할 수 있습니다(01234가 1234로 파싱되지 않음).

특수 문자가 포함된 문자열 변환이 실패하나요?

원인: SQL 문자열 내 특수 문자(줄바꿈, 따옴표, 백슬래시)가 올바르게 이스케이프되지 않았습니다. 본 도구는 SQL 표준 이스케이프('' → ')와 MySQL 백슬래시 이스케이프(\n, \' 등)를 지원하지만 원래 SQL이 비표준 이스케이프(PostgreSQL의 E'...' 문자열 등)를 사용한 경우 올바르게 복원되지 않을 수 있습니다. 해결: SQL 이스케이프가 표준인지 확인하고 필요하면 텍스트 편집기로 수동 조정한 후 변환하세요.

다중 테이블 SQL 변환 후 첫 번째 테이블만 보이나요?

원인: "다중 테이블 개별 출력" 옵션이 꺼져 있어 CSV/HTML/Markdown 등 표 형식이 기본적으로 첫 번째 테이블만 출력합니다. 해결: "설정"에서 "다중 테이블 개별 출력"을 활성화하면 CSV가 테이블별로 분할 출력(# Table: 테이블 이름 표시)되고 JSON이 테이블 이름으로 그룹화됩니다({테이블1:[...],테이블2:[...]}). JSON Lines 형식은 테이블을 구분하지 않고 모든 행이 병합되어 출력된다는 점에 유의하세요.

SQL 재생성 후 테이블이나 열 이름의 따옴표가 잘못되나요?

원인: 재생성 시 잘못된 방언을 선택했습니다. 방언마다 다른 따옴표 스타일(MySQL 역따옴표, PostgreSQL 큰따옴표, SQL Server 대괄호)을 사용합니다. 해결: "설정"에서 대상 SQL 방언을 선택하면 도구가 해당 따옴표 스타일로 INSERT를 다시 생성합니다. 예를 들어 PostgreSQL을 선택하면 테이블 이름이 "users"가 되고 MySQL을 선택하면 `users`가 됩니다.

용어집

SQL (Structured Query Language)
구조화 질의어. 관계형 데이터베이스(MySQL, PostgreSQL, Oracle, SQL Server, SQLite)의 표준 질의 및 조작 언어로 DDL(데이터 정의), DML(데이터 조작), DQL(데이터 질의), DCL(데이터 제어) 등 하위 언어를 포함합니다.
INSERT 문
SQL에서 테이블에 데이터를 삽입하는 문. 구문은 INSERT INTO table (cols) VALUES (vals). 단일 행과 다중 값 튜플 일괄 삽입을 지원합니다. 본 도구는 주로 INSERT 문을 파싱하여 데이터를 추출합니다.
CREATE TABLE 문
SQL에서 테이블을 생성하는 DDL 문. 열 이름, 데이터 타입, 제약 조건(NOT NULL, PRIMARY KEY, UNIQUE 등)을 정의합니다. 본 도구는 CREATE TABLE을 파싱하여 열 정의 정보를 추출할 수 있습니다.
VALUES 튜플
INSERT 문에서 VALUES 키워드 뒤 괄호 안의 값 목록. 예: (1, 'Alice', TRUE). 하나의 INSERT에 여러 튜플을 포함해 일괄 삽입할 수 있습니다: VALUES (1,'A'), (2,'B'), (3,'C').
SQL 방언
데이터베이스 벤더마다 SQL 표준을 확장 구현한 차이. MySQL은 역따옴표, PostgreSQL은 큰따옴표, SQL Server는 대괄호로 식별자를 감싸고 불리언 표현(TRUE/1), 자동 증가 열(AUTO_INCREMENT/SERIAL) 등도 다릅니다.
식별자 따옴표
SQL에서 테이블 이름, 열 이름 등 식별자를 감싸는 특수 문자. MySQL은 역따옴표 `name`, PostgreSQL과 표준 SQL은 큰따옴표 "name", SQL Server는 대괄호 [name]을 사용하며 예약어 이스케이프나 대소문자 구분 시나리오에 사용됩니다.
SQL 이스케이프
SQL 문자열 내에서 특수 문자를 나타내는 메커니즘. SQL 표준은 작은따옴표를 두 번 써서('') 나타내고 MySQL은 백슬래시 이스케이프(\n, \t, \', \\)도 지원합니다. 본 도구는 두 가지 이스케이프 메커니즘을 모두 복원합니다.
NULL 값
SQL에서 누락되거나 알 수 없는 데이터를 나타내는 특수 값. 대소문자를 구분하지 않습니다(NULL/null/Null). NULL은 빈 문자열이나 0과 같지 않으며 JSON에서는 null로, CSV에서는 보통 비워 둡니다.
16진수 리터럴
SQL에서 이진 데이터를 나타내는 리터럴 구문. MySQL은 0x... 및 X'...' 형식을 지원하고 PostgreSQL은 X'...' 및 B'...'(이진)을 지원합니다. 본 도구는 16진수 리터럴을 그대로 보존합니다.
JSON Lines (NDJSON)
한 줄에 하나의 독립적인 JSON 객체를 배치하는 텍스트 형식. 확장자는 .jsonl. 스트림 처리, 대용량 데이터 가져오기, Elasticsearch bulk API에 적합하며 완전한 JSON 배열보다 메모리를 절약합니다.
RFC 4180
CSV 형식의 국제 표준(Common Format and MIME Type for Comma-Separated Values Files). 필드 구분, 따옴표 이스케이프, 줄바꿈 처리 등의 규칙을 규정합니다. 본 도구의 CSV 출력은 이 표준을 준수합니다.
BOM (Byte Order Mark)
바이트 순서 표시, U+FEFF 문자. UTF-8 파일 시작 부분의 BOM은 Excel 등 소프트웨어가 인코딩을 올바르게 인식하고 한글 깨짐을 방지하는 데 도움을 줍니다. 본 도구의 CSV 출력은 BOM을 선택적으로 포함할 수 있습니다.
SQL Dump
데이터베이스에서 내보낸 SQL 스크립트 파일. 일반적으로 mysqldump, pg_dump 등 도구로 생성되며 CREATE TABLE과 INSERT 문을 포함하고 데이터베이스 백업과 마이그레이션에 사용됩니다.
DDL (Data Definition Language)
데이터 정의 언어. SQL의 하위 집합으로 CREATE, ALTER, DROP 등 문을 포함하며 데이터베이스 구조(테이블, 뷰, 인덱스 등)를 정의하고 수정하는 데 사용됩니다.

지원되는 출력 형식 비교

9가지 출력 형식의 특징과 적용 시나리오 비교:

형식확장자특징최적 시나리오
JSON.json구조화된 배열, 타입 보존API 연동, 프로그램 읽기, 프런트엔드 데이터
JSON Lines.jsonl한 줄에 하나의 JSON 객체스트림 처리, Elasticsearch, 대용량 데이터
CSV.csv쉼표 구분 표, RFC 4180Excel, 데이터 분석, 보고서
TSV.tsvTab 구분 표스프레드시트에 붙여넣기, 생물정보학
XML.xml태그와 속성이 있는 구조화된 문서SOAP 인터페이스, 설정 파일, Java 시스템
YAML.yaml가장 읽기 쉬운 설정 형식Ansible, K8s, CI/CD 설정
HTML.html스타일이 있는 표, 브라우저에서 직접 조회 가능웹 표시, 이메일, 보고서
Markdown.mdMarkdown 표 구문README, 문서 사이트, 기술 블로그
SQL 재생성.sqlINSERT 재생성, 방언 전환 가능교차 데이터베이스 마이그레이션, 테이블 이름 변경

SQL 값 타입 인식 규칙

SQL 값을 파싱할 때의 타입 인식 규칙(리터럴 형식으로 판단):

SQL 리터럴인식 타입JSON 출력CSV 출력
123정수123123
-45음의 정수-45-45
3.14부동소수점3.143.14
1e10과학적 표기법1000000000010000000000
'hello'문자열"hello"hello
NULL빈 값null(빈)
TRUE불리언 참trueTRUE
FALSE불리언 거짓falseFALSE
0xFF16진수"0xFF"0xFF
X'4142'16진수"X'4142'"X'4142'

데이터베이스 방언별 식별자 따옴표 스타일

주요 데이터베이스의 식별자(테이블 이름, 열 이름) 따옴표 차이:

데이터베이스따옴표 스타일예시설명
MySQL/MariaDB역따옴표 ``users`기본 활성화, 예약어 이스케이프
PostgreSQL큰따옴표 ""users"대소문자 구분, 표준 SQL 스타일
SQLite큰따옴표 " / 역따옴표 ` / 대괄호 []"users" / [users]여러 스타일 호환
SQL Server대괄호 [][users]T-SQL 기본 스타일
Oracle큰따옴표 ""users"대문자 강제, 따옴표로 대소문자 보존
표준 SQL큰따옴표 ""users"ANSI SQL 표준

Privacy & Security

본 SQL 변환기의 모든 작업은 완전히 브라우저 로컬에서 이루어집니다: SQL 파싱, 데이터 추출, 형식 변환은 모두 브라우저 JavaScript로 클라이언트 측에서 실행되며 SQL 내용, 업로드 파일, 변환 결과는 네트워크를 통해 어떤 서버로도 전송되지 않습니다. 파일 업로드는 브라우저 네이티브 FileReader API로 직접 메모리에 읽어오며 중간 서비스를 거치지 않습니다. 쿠키를 사용한 추적을 하지 않으며 사용자 입력이나 사용 데이터를 수집하지 않습니다. 페이지를 닫거나 새로고침하면 모든 입력과 출력 내용이 메모리에서 자동으로 삭제됩니다(기록은 브라우저 localStorage에 로컬 저장됨). 사용자 개인정보나 상업적으로 민감한 정보가 포함된 데이터베이스 내보내기 스크립트 처리에 적합합니다.

Authoritative References