이 도구가 해결하는 일

개발 DB에 "그럴듯한" 데이터가 필요할 때 — 손으로 INSERT를 몇 줄 짜다 보면 전부 test1, test2가 되고, 화면 검증이 무의미해집니다. 이 도구는 DDL을 붙여넣으면 컬럼 이름·타입에서 유형을 추론해(이름·날짜·금액·전화번호·주소…) 자연스러운 테스트 데이터를 N행 생성합니다.

안전 설계 — 가짜가 가짜로 보이게

테스트 데이터가 실데이터처럼 보이면 사고가 됩니다 — 스크린샷 한 장이 유출 오해를 만들 수 있습니다. 그래서 식별번호류는 체크섬을 일부러 불일치시킵니다:

유형생성 방식
주민등록번호 형식형식은 맞되 검증 숫자 불일치실존 번호와 우연히 일치할 가능성 차단
사업자등록번호 형식형식은 맞되 체크섬 불일치실제 사업자 조회에 걸리지 않게
카드번호 형식형식은 맞되 검증 규칙 불일치유효 카드번호가 생성되지 않게
이름·주소·전화한국어 조합 생성패턴 다양성 — 전부 test1이 되지 않게

시드 결정성도 핵심입니다 — 같은 시드로 돌리면 같은 데이터가 나옵니다. "어제 그 데이터"를 다시 만들 수 있어 버그 재현·테스트 공유가 됩니다.

실무 시나리오

예시

CREATE TABLE customer (
  cust_nm   VARCHAR(30),
  phone_no  VARCHAR(20),
  birth_dt  DATE,
  amt       NUMBER(12)
);

→ 유형 추론: 이름 / 전화번호 / 날짜 / 금액 → INSERT N행 생성

자주 겪는 함정

사용 순서

좋은 테스트 데이터의 조건

화면·쿼리 검증의 품질은 데이터의 다양성이 만듭니다 — 전부 같은 길이의 이름, 전부 같은 날짜면 말줄임 처리도 정렬 버그도 드러나지 않습니다. 생성기는 길이·값 분포가 흩어진 데이터를 만들어 이 문제를 줄입니다. 반대로 경계값(빈 값·최대 길이·특수문자)은 자동 생성의 사각지대일 수 있으니, 생성분 위에 경계 케이스 몇 행을 손으로 얹는 조합이 실무적으로 가장 단단합니다.

시드 결정성의 실무 가치

무작위 데이터의 함정은 "어제는 됐는데 오늘 안 되는" 테스트를 만든다는 것입니다. 시드 고정은 이 문제를 제거합니다 — 같은 시드는 언제나 같은 데이터를 만들므로, 테스트 문서에 시드 하나만 적어두면 몇 달 뒤에도 동일 조건을 재현할 수 있습니다. 버그 리포트·인수 테스트 시나리오·시연 준비처럼 "그때 그 데이터"가 필요한 모든 자리에서 시드가 데이터 전체를 대신하는 짧은 이름이 됩니다.

반대로 다양성이 필요할 때는 시드를 바꿔 여러 세트를 만들면 됩니다 — 세트 간 비교로 "데이터 우연에 기댄 통과"를 걸러낼 수 있습니다.

자주 묻는 질문

생성된 개인정보처럼 보이는 값, 진짜인가요?
아니요. 형식만 흉내 내고 검증 규칙을 일부러 어긋나게 만들어 실존 번호와 일치하지 않도록 설계했습니다.
같은 데이터를 다시 만들 수 있나요?
네 — 시드를 고정하면 같은 결과가 나옵니다. 시드를 바꾸면 다른 세트가 나옵니다.
몇 행까지 생성되나요?
수천 행 수준의 개발용 데이터는 무리 없이 생성됩니다 — 브라우저 성능 범위 안에서 동작합니다.
DDL이 외부로 전송되나요?
아니요. 추론·생성 전부 브라우저 안에서 끝납니다.
특정 값 범위를 지정할 수 있나요?
유형 추론 기반 자동 생성이 중심입니다 — 정밀한 값 제어가 필요한 열은 생성 후 치환하는 편이 빠릅니다.
생성 규칙을 저장할 수 있나요?
시드와 DDL만 보관하면 같은 결과를 언제든 재생성할 수 있습니다 — 그 둘이 곧 저장본입니다.

함께 쓰는 도구

DDL이 없다면 DDL ↔ 정의서로 정의서에서 먼저 DDL을 만드세요. 생성 데이터로 조회 조건을 만들 때는 IN절 생성기, 실행 쿼리 분석은 로그 바인더가 이어집니다.

DosqlKit(도스퀄킷) — SQL 실무 툴킷

DosqlKit(도스퀄킷)은 SQL 실무에서 반복되는 손작업을 한 화면에 모은 툴킷입니다. MyBatis 로그의 물음표(?)에 Parameters 값을 끼워 실행 가능한 SQL로 재조립하고, 엑셀·CSV 열을 IN절이나 INSERT문으로 만들고, DDL과 테이블 정의서를 서로 변환하고, 테스트용 목데이터를 생성합니다.

쿼리를 실제로 실행해 보기 전에 로그에서 바로 값을 확인하거나, 정의서 문서를 만들거나, 더미 데이터를 채워야 하는 SI·유지보수 현장을 위해 만들었습니다. 모든 변환은 접속한 기기의 브라우저 안에서 끝나며, 붙여넣은 로그·스키마·데이터가 외부 서버로 전송되지 않습니다. 아래에서 각 탭의 쓰임과 자주 묻는 질문을 정리했습니다.

주요 기능

사용법

MyBatis 로그 바인더

콘솔에 찍힌 "Preparing:"(물음표가 든 SQL)과 "Parameters:"(값 목록) 두 줄을 붙여넣으면, 물음표 자리에 값을 순서대로 끼워 실제 실행된 SQL로 재조립합니다. 타입에 맞춰 문자열은 따옴표로 감싸 바로 실행·검증할 수 있습니다.

IN절·INSERT 생성기

엑셀이나 CSV에서 복사한 열을 붙여넣으면 IN (…) 목록이나 INSERT문으로 만들어 줍니다. 오라클의 IN절 1000개 제한에 걸리면 자동으로 OR 조건으로 나눠 줍니다.

DDL ↔ 정의서 · 목데이터

CREATE TABLE 문을 붙여넣으면 마크다운·TSV 테이블 정의서로 바꾸고, 반대로 정의서에서 DDL을 만듭니다. 목데이터 탭은 DDL에서 컬럼 유형을 추론해 원하는 행 수만큼 더미 데이터를 생성하며, 같은 시드는 항상 같은 결과를 냅니다.

자주 묻는 질문

DosqlKit은 무료인가요?

네, 모든 도구를 무료로 쓸 수 있습니다. 운영 비용은 페이지에 표시되는 광고로 충당합니다.

회원가입이나 설치가 필요한가요?

아니요. 브라우저로 페이지를 열면 바로 쓸 수 있고, 로그인이나 프로그램 설치가 필요 없습니다.

붙여넣은 로그나 스키마가 서버로 전송되나요?

아니요. 로그 바인딩, IN절 생성, 정의서 변환, 목데이터 생성은 모두 접속한 기기의 브라우저 안에서 처리되며, 입력한 내용은 외부 서버로 전송되지 않습니다.

생성된 목데이터의 주민·사업자·카드번호를 실제로 써도 되나요?

아니요. 개인정보 오남용을 막기 위해 이런 식별번호는 체크섬(검증 숫자)이 일부러 어긋나게 생성되어 실제로는 유효하지 않은 값입니다. 테스트·개발 용도로만 사용하세요.

어떤 정보가 저장되나요?

테마와 마지막으로 연 탭 같은 화면 설정만 브라우저 localStorage에 저장됩니다. 붙여넣은 로그·데이터 자체는 저장하지 않습니다.

광고와 쿠키는 어떻게 처리되나요?

Google 애드센스 광고가 표시될 수 있으며 광고 목적의 제3자 쿠키가 사용될 수 있습니다. 자세한 내용은 페이지 하단 "개인정보 안내"에서 확인할 수 있습니다.

SQL 실무 가이드