이 도구가 해결하는 일

"이 주문번호 300건만 조회해 주세요"라며 엑셀 파일이 날아옵니다. 값 300개에 따옴표를 붙이고 쉼표로 잇는 작업을 손으로 하다 보면 따옴표 하나가 빠지고, 마지막 쉼표가 남아 문법 오류가 납니다. 이 도구는 엑셀 열을 복사해 붙여넣으면 IN절 또는 INSERT 문을 만들어 줍니다.

붙여넣은 값은 브라우저 안에서만 처리됩니다 — 고객 식별번호 같은 민감한 목록을 다뤄도 외부로 나가지 않습니다.

두 가지 출력

오라클 1000개 제한 — 자동 분할

Oracle은 IN 목록 하나에 1000개까지만 허용합니다. 1000건이 넘는 목록을 붙여넣으면 도구가 자동으로 IN (…첫 1000개…) OR 컬럼 IN (…나머지…) 형태로 분할해 줍니다 — 운영 중 갑자기 만나면 당황하는 제한을 미리 흡수합니다.

입력 (엑셀 한 열)출력
A001
A002
A003
IN ('A001', 'A002', 'A003')
1200건의 코드IN (…1000개…) OR col IN (…200개…) 자동 분할
값에 작은따옴표 포함 (O'Neil)'O''Neil' — SQL 이스케이프 자동

실무 시나리오

자주 겪는 함정

사용 순서

타입 선택이 결과를 가른다

같은 목록도 문자 타입이면 따옴표가 붙고, 숫자 타입이면 그대로 들어갑니다. DB 컬럼 타입과 다르게 만들면 — 문자 컬럼에 숫자 리터럴 — 조회는 되더라도 인덱스를 타지 못하는 암묵적 형변환이 일어날 수 있습니다. 목록의 생김새가 아니라 대상 컬럼의 타입에 맞추는 것이 원칙이고, 애매하면 문자 쪽이 데이터 손상(앞자리 0 소실)이 없는 안전한 기본값입니다.

생성 SQL을 다루는 규율

도구가 만든 IN절·INSERT는 문법적으로 완성돼 있지만, 실행의 책임은 사람에게 남습니다. IN절은 실행 전에 대상 건수를 COUNT로 먼저 확인하고, INSERT는 트랜잭션 안에서 실행해 건수를 확인한 뒤 확정하는 습관이 사고를 막습니다. 특히 현업이 준 엑셀은 중복·오타·빈 행이 섞여 있는 것이 보통이므로, "받은 목록 그대로"가 아니라 "검증한 목록"으로 변환하는 순서가 중요합니다.

생성 결과를 저장소나 위키에 남길 때는 실데이터 목록이 포함된다는 점을 기억하세요 — 고객 식별자가 든 IN절은 그 자체로 개인정보 문서가 됩니다. 공유 전 마스킹이 필요한지 판단하는 것까지가 이 작업의 마무리입니다.

자주 묻는 질문

한 번에 몇 건까지 되나요?
수만 건 수준의 일상 목록은 무리 없이 처리됩니다. 브라우저 안에서만 계산되므로 크기 제한은 PC 성능에 따릅니다.
숫자와 문자가 섞인 열은요?
타입을 명시적으로 고르는 것이 안전합니다 — 혼합 자동 판별은 앞자리 0 같은 사고를 만들기 쉬워 사용자 선택을 우선합니다.
NULL 값은 어떻게 넣나요?
빈 칸의 처리(NULL로 볼지, 빈 문자열로 볼지)는 옵션으로 정합니다 — 둘은 DB에서 다른 값입니다.
INSERT의 테이블·컬럼명은 어디서 오나요?
직접 입력하거나 붙여넣은 데이터의 헤더 행을 활용합니다. 실행 전에 스키마와 대조하세요.
입력한 목록이 서버로 전송되나요?
아니요. 변환 전부 브라우저 안에서 끝나고 네트워크 요청이 없습니다.
생성 결과에 세미콜론이 붙나요?
문장 완결 형태로 나옵니다 — 여러 문장을 이어 실행할 때는 DB 툴의 실행 단위 설정을 확인하세요.

함께 쓰는 도구

만든 IN절을 실행했는데 0건이면 로그 바인더로 실제 바인딩 값과 대조해 보세요. 테이블 구조가 필요하면 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 실무 가이드