이 도구가 해결하는 일

MyBatis 로그에는 SQL이 ? 투성이인 Preparing: 줄과, 값 목록인 Parameters: 줄로 나뉘어 찍힙니다. 장애 분석 때 이 둘을 눈으로 짝지어 물음표에 값을 하나씩 끼워 넣는 작업 — 파라미터가 스무 개쯤 되면 반드시 한 칸씩 밀립니다. 이 도구는 두 줄을 붙여넣으면 자동으로 짝지어 DB 툴에 바로 붙여 실행할 수 있는 SQL을 만들어 줍니다.

운영 쿼리와 파라미터는 민감한 데이터입니다 — 조립은 전부 브라우저 안에서 끝나고, 어떤 값도 외부로 전송되지 않습니다.

타입별 리터럴 규칙 — 왜 그냥 치환하면 안 되나

물음표에 값을 끼울 때는 JDBC 타입에 따라 SQL 리터럴 문법이 달라야 합니다. 이 도구는 Parameters 줄의 타입 표기((String)·(Integer)…)를 읽어 규칙을 적용합니다:

로그의 타입변환 규칙
String작은따옴표로 감싸고 내부 따옴표 이스케이프kim'kim'
Integer·Long·Double그대로(따옴표 없음)4242
Timestamp·Date날짜 리터럴로 감쌈2026-08-29 …'2026-08-29 …'
nullNULL 키워드nullNULL
Boolean불리언 리터럴truetrue

실무 시나리오

예시

Preparing: SELECT * FROM orders WHERE user_id = ? AND status = ? AND amount > ?
Parameters: 1024(Long), PAID(String), 50000(Integer)

→ 조립 결과

SELECT * FROM orders WHERE user_id = 1024 AND status = 'PAID' AND amount > 50000

자주 겪는 함정

사용 순서

로그 설정 팁

바인더의 재료인 Parameters 로그는 MyBatis 로그 레벨이 낮으면 아예 찍히지 않습니다. 개발·검증 환경에서는 매퍼 로거를 상세 레벨로 열어 두는 편이 장애 분석 속도를 크게 줄입니다 — 단, 운영 환경은 파라미터에 개인정보가 실릴 수 있어 로그 정책과 마스킹 규정을 먼저 확인해야 합니다. 로그가 없어 재현 SQL을 못 만드는 상황과, 로그에 민감정보가 남는 상황 — 둘 사이의 균형은 조직의 규정이 정합니다.

바인더가 아끼는 시간의 정체

물음표 스무 개짜리 쿼리를 손으로 짝지으면 5분, 틀리면 다시 5분입니다 — 그리고 틀렸다는 사실은 실행 결과가 이상할 때에야 드러납니다. 장애 상황에서 이 왕복은 치명적입니다. 자동 조립은 시간 단축보다 확신을 줍니다: 개수 검증을 통과한 SQL은 적어도 "값이 밀려 들어간" 종류의 오류가 없다는 보증이 되고, 분석의 출발점을 신뢰할 수 있게 됩니다.

팀 차원에서는 장애 대응 절차에 이 도구를 끼워 넣는 방식이 효과적입니다 — "로그에서 Preparing/Parameters를 복사해 바인더로 조립한 SQL을 티켓에 첨부"를 표준 절차로 정하면, 담당자가 바뀌어도 재현 SQL의 품질이 일정해집니다.

자주 묻는 질문

여러 쿼리가 섞인 로그도 되나요?
Preparing/Parameters 짝 단위로 처리합니다. 한 쌍씩 붙여넣는 것이 가장 정확합니다.
조립된 SQL이 보기 어려운데요.
"정리해 보기"가 SQL 포맷터로 들여쓰기·구문 색을 입혀 줍니다 — 자매 앱 DoffKit의 SQL 포맷터와 같은 엔진입니다.
운영 파라미터를 붙여넣어도 안전한가요?
모든 처리가 브라우저 안에서 끝나고 네트워크 전송이 없습니다. 다만 조립 결과를 티켓에 붙일 때 개인정보가 남는지는 확인하세요.
타입 표기가 없는 로그는요?
타입을 모르면 문자열 취급이 안전한 기본값입니다 — 숫자 컬럼이면 따옴표만 지우면 됩니다.
IN (?, ?, ?) 같은 다중 바인딩도 되나요?
물음표 순서대로 값을 끼우므로 그대로 동작합니다. 개수 불일치가 있으면 경고합니다.

함께 쓰는 도구

조립한 SQL의 IN절을 새 값 목록으로 다시 만들려면 IN절·INSERT 생성기, 테이블 구조 확인은 DDL ↔ 정의서, 테스트 데이터가 필요하면 목데이터 생성으로 이어가세요.

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 실무 가이드