실제 데이터 행을 SQL로
첫 행은 컬럼 Header, 둘째 행부터는 실제 값입니다. INSERT, UPDATE, DELETE, MERGE/UPSERT, SELECT, IN CONDITION, 컬럼명 변환을 지원합니다.
DEVGRIZZLY / DB DEVELOPER TOOLS
DevGrizzly가 만든 Google Sheets 부가기능으로, 데이터 표에서는 INSERT 같은 SQL을 만들고 테이블 정의표에서는 DDL, Java VO, MyBatis 코드를 생성할 수 있습니다.
01 / OPEN
DB Developer Tools를 설치한 Google 계정으로 스프레드시트를 열거나 새로고침합니다.
상단 메뉴에서 “DB 개발자 도구 → 도구 열기”를 선택합니다. 영어 환경에서는 “DB Developer Tools → Open tools”로 표시됩니다.
오른쪽 사이드바에서 언어, 모드(DATA 또는 SCHEMA), DBMS, 기능을 선택합니다.
시트에서 범위를 바꿀 때마다 “범위 새로고침”을 눌러 사이드바 상단의 선택 범위를 갱신합니다.
첫 행은 컬럼 Header, 둘째 행부터는 실제 값입니다. INSERT, UPDATE, DELETE, MERGE/UPSERT, SELECT, IN CONDITION, 컬럼명 변환을 지원합니다.
첫 행은 COLUMN_NAME, DATA_TYPE 같은 Schema Header이고 둘째 행부터는 컬럼 정의입니다. DDL, Java DTO/VO, MyBatis, SQL CRUD를 지원합니다.
02 / DATA MODE
DATA 모드는 화면에 보이는 표 그대로 값을 읽어 DBMS에 맞는 SQL Literal로 변환합니다. 문자열의 작은따옴표는 이스케이프되고, 빈 셀은 NULL로 처리되며, Sheets 날짜 셀은 DBMS에 맞는 날짜 표현식으로 변환됩니다.
| USER_ID | USER_NM | AGE | ACTIVE_YN |
|---|---|---|---|
| U001 | Jane Kim | 30 | Y |
| U002 | Hong Gil-dong | (빈 셀) | N |
모든 Header 셀은 비어 있지 않아야 하고 컬럼명이 중복되면 안 됩니다.
숫자와 날짜는 가능하면 Sheets의 숫자·날짜 셀 형식을 사용하세요. 빈 셀은 NULL로 처리됩니다.
예제에서는 A1:D3 전체를 선택합니다. 선택을 바꾼 뒤에는 사이드바의 “범위 새로고침”을 누르세요.
INSERT INTO TB_USER (
USER_ID,
USER_NM,
AGE,
ACTIVE_YN
) VALUES
('U001', 'Jane Kim', 30, 'Y'),
('U002', 'Hong Gil-dong', NULL, 'N');“한 행씩”을 선택하면 각 데이터 행마다 INSERT 문 하나를 만듭니다. “NULL 컬럼 포함”을 끄면 빈 값인 컬럼은 해당 행의 INSERT 컬럼 목록에서 제외됩니다. Oracle에서 Multi-row를 선택하면 INSERT ALL 문법이 사용됩니다.
03 / SCHEMA MODE
SCHEMA 모드는 실제 데이터가 아니라 테이블의 컬럼 정의를 읽습니다. 첫 행의 Header 이름으로 각 속성을 인식하므로, 아래 표처럼 정리하면 가장 안정적입니다.
COLUMN_NAME필수DB 컬럼명. 예: USER_ID
DATA_TYPE필수DB 타입. 예: VARCHAR, NUMBER(20,5), TIMESTAMP
LENGTH선택문자·바이너리 길이. 예: 100
PRECISION선택숫자 전체 자릿수. 예: 20
SCALE선택숫자 소수 자릿수. 예: 5
PK선택기본키이면 Y, 아니면 N. 복합 PK는 여러 행에 Y
NULLABLE선택NULL 허용이면 Y, NOT NULL이면 N. PK는 자동으로 NOT NULL
COMMENT선택컬럼 설명. COMMENT SQL과 Java Field Comment에 사용
Header는 대소문자를 구분하지 않습니다. COLUMN_NAME/컬럼명, DATA_TYPE/데이터타입, COMMENT/설명 같은 별칭도 인식합니다. 운영 문서에는 위 영문 Header를 권장합니다.
| COLUMN_NAME | DATA_TYPE | LENGTH | PRECISION | SCALE | PK | NULLABLE | COMMENT |
|---|---|---|---|---|---|---|---|
| USER_ID | VARCHAR | 30 | Y | N | User ID | ||
| USER_NM | VARCHAR | 100 | N | N | User name | ||
| AGE | INTEGER | N | Y | Age | |||
| CREATED_AT | TIMESTAMP | N | N | Created at |
A1:H5 전체를 선택합니다. DATA_TYPE에 VARCHAR(30), NUMBER(20,5)처럼 길이·정밀도를 직접 적고 LENGTH/PRECISION/SCALE을 비워도 됩니다.
CREATE TABLE TB_USER (
USER_ID VARCHAR(30) NOT NULL,
USER_NM VARCHAR(100) NOT NULL,
AGE INTEGER,
CREATED_AT TIMESTAMP NOT NULL,
CONSTRAINT PK_TB_USER PRIMARY KEY (USER_ID)
);같은 정의표를 Oracle, PostgreSQL, MySQL, MariaDB, Microsoft SQL Server 중 하나로 생성하면 VARCHAR2/VARCHAR, NUMBER/NUMERIC/DECIMAL, CLOB/TEXT 같은 타입이 대상 DBMS에 맞게 변환됩니다. 실제 반영 전에는 팀의 타입·제약조건 규칙과 결과를 반드시 검토하세요.
04 / DEVELOPMENT CODE
DDL과 같은 SCHEMA 표를 그대로 재사용합니다. COLUMN_NAME은 camelCase Java 필드로 변환되고, DATA_TYPE은 선택한 DBMS 기준의 Java/JDBC 타입으로 매핑됩니다.
CREATE TABLE테이블 생성 DDL
COMMENT SQL테이블·컬럼 설명 SQL
FULL SQL CRUDDBMS별 SELECT/INSERT/UPDATE/DELETE/UPSERT SQL 묶음
MYBATIS FULL CRUDresultMap과 CRUD Mapper XML 전체
ALL GENERATEDDL, COMMENT, Java, MyBatis, SQL CRUD 전체 결과
05 / TROUBLESHOOTING
시트에서 범위를 선택한 뒤 “범위 새로고침”을 누르고, 테이블명·PK 컬럼·Class Name 등 현재 기능의 필수 입력값을 채우세요.
DATA 모드는 첫 행 Header와 한 행 이상의 데이터를 함께 선택해야 합니다.
SCHEMA 모드의 첫 행에 두 필수 Header가 포함되어 있는지 확인하세요. 공백과 밑줄은 허용되지만 같은 의미의 Header를 중복해서 넣으면 안 됩니다.
DATA UPDATE·DELETE·UPSERT는 사이드바의 PK 컬럼에 실제 Header명을 입력해야 합니다. SCHEMA MyBatis UPDATE·DELETE·UPSERT는 시트의 PK 열에 Y인 컬럼이 필요합니다.
지원 목록에 없는 DB 타입은 안전하게 Object로 생성되고 경고가 표시됩니다. DBMS와 DATA_TYPE 표기를 확인한 뒤 필요한 경우 직접 타입을 조정하세요.