로컬 SQL 데이터 작업대
이 작업대는 파일을 서버에 업로드하지 않고 브라우저의 격리된 SQLite WASM Worker에서 질의합니다. UTF-8 CSV는 첫 행을 열 이름으로 사용하고 빈 셀을 NULL로, 숫자만 있는 열을 REAL로 만듭니다. SQLite 파일은 원본을 수정하지 않고 메모리에 읽습니다. SELECT 한 문장만 허용하며 결과 행·바이트와 실행 시간을 제한합니다. 실행 계획은 SQLite의 EXPLAIN QUERY PLAN 진단이며 성능 보증은 아닙니다.
주요 기능
- CSV 최대 3개·SQLite 3 파일 1개를 로컬 메모리에서 읽고 스키마를 표시
- SQLite SELECT·JOIN·GROUP BY·집계·ORDER BY를 실제 실행
- EXPLAIN QUERY PLAN 단계와 결과 표·CSV 내보내기
- 읽기 전용 PRAGMA와 SELECT 제한, Worker 취소·3초 시간 상한
- 파일 2 MiB/총 3 MiB, CSV 5,000행, 결과 1,000행·1 MiB 상한
사용 방법
- 두 CSV 예제를 누르거나 UTF-8 CSV/SQLite 파일을 선택합니다.
- 표 이름과 열을 확인합니다. CSV 파일 이름에서 표 이름이 만들어집니다.
- SELECT 한 문장을 입력하고 실행합니다. JOIN과 GROUP BY를 함께 사용할 수 있습니다.
- 결과·잘림 경고·실행 계획을 확인하고 필요하면 실행 중 취소합니다.
- 결과 CSV를 내려받습니다. 스프레드시트 수식처럼 시작하는 셀은 내보낼 때 문자로 보호됩니다.
활용 예시
- 작은 두 CSV의 고객·주문 키를 JOIN해 합계 확인
- 로컬 SQLite 데이터베이스의 테이블 구조와 일부 행 조회
- GROUP BY 집계와 ORDER BY 결과를 CSV로 전달
- SCAN/SEARCH 실행 계획을 보고 SQL 인덱스 사용 여부 탐색
자주 묻는 질문
쓰기 SQL도 실행되나요?
아니요. 첫 문장이 SELECT인 단일 문장만 받으며 SQLite query_only 설정을 켭니다. 기존 SQLite 원본은 메모리에 복사해 열고 저장하지 않습니다. SQL 구문 검사만으로 보안 경계를 주장하지 않으며 Worker 격리도 함께 사용합니다.
CSV의 자료형은 어떻게 정해지나요?
첫 행을 열 이름으로 쓰며 숫자가 아닌 값이 하나라도 있으면 TEXT입니다. 모든 비어 있지 않은 셀이 유한 숫자이면 REAL입니다. 빈 셀은 NULL입니다. 001 같은 식별자는 숫자로 판정되면 앞 0이 사라지므로 원본을 검토하세요.
어느 정도 큰 파일을 다루나요?
파일당 2 MiB, 전체 3 MiB, CSV 3개·각 5,000 데이터행, SQLite 1개, 표 20개·열 50개입니다. 결과는 최대 1,000행·약 1 MiB이며 제한에 닿으면 잘림을 표시합니다. Worker의 쿼리는 3초 후 종료하지만 브라우저 메모리 사용량의 정확한 상한을 보장하지는 않습니다.
실행 계획은 실행 시간과 같은가요?
아니요. SQLite EXPLAIN QUERY PLAN의 SCAN/SEARCH 같은 단계 설명입니다. 실제 시간은 기기·자료·쿼리에 따라 다릅니다. 페이지의 밀리초 수는 로컬 실행 한 번의 측정값입니다.
CSV를 엑셀로 열어도 되나요?
내보내기에서는 =, +, -, @, 탭·줄바꿈으로 시작하는 값 앞에 작은따옴표를 붙여 수식 실행을 막습니다. 이 보호 때문에 그런 셀은 원본 텍스트와 한 글자 달라집니다. 민감한 파일은 스프레드시트의 가져오기 설정도 확인하세요.
파일이 사이트로 전송되나요?
도구는 선택한 파일을 브라우저 메모리에서 읽고 로컬 Worker에서 질의합니다. 결과 파일은 사용자가 내려받을 때 생성합니다. 브라우저 탭을 닫으면 작업 상태가 사라집니다.
개인정보 안내
선택한 원본과 SQL 문장은 이 브라우저 탭의 메모리에만 머뭅니다. 이 도구는 파일 내용·질의·결과를 서버로 전송하거나 자동 저장하지 않습니다.
댓글과 질문