이 도구에 대하여
이 도구는 CSV를 실제 인메모리 SQLite 데이터베이스로 불러와 진짜 SQL을 실행하게 해 줍니다 — SELECT, WHERE, ORDER BY, GROUP BY, SUM·COUNT 같은 집계, 서브쿼리, 셀프 조인이 모두 데이터베이스에서와 똑같이 동작합니다. WebAssembly로 컴파일된 공식 SQLite로 구동되므로, 조회 엔진은 부분적으로 재구현한 것이 아니라 진짜입니다.
업로드되는 것은 없습니다. SQLite 엔진과 CSV는 기기를 벗어나지 않으며 — 데이터베이스 전체가 브라우저 탭 메모리 안에서만 존재하다가 탭을 닫으면 사라집니다. 덕분에 내보낸 자료, 매출 데이터, 로그, 온라인 데이터베이스에 붙여넣고 싶지 않은 스프레드시트를 안심하고 탐색할 수 있는 임시 작업 공간이 됩니다. eval을 쓰지 않는 공식 SQLite 빌드를 사용하므로 sql.js 계열 도구가 차단되는 엄격한 보안 정책에서도 실행됩니다.
열 이름은 헤더 행에서 가져와 유효한 식별자로 정리되고, 모든 값은 텍스트로 저장되므로 산술 연산이 필요하면 조회에서 숫자로 캐스트하세요(예: CAST(price AS REAL)). 결과는 CSV로 내려받을 수 있는 표로 표시됩니다.
자주 묻는 질문
제 CSV나 조회가 어딘가에 업로드되나요?
아니요. SQLite 엔진은 WebAssembly로 브라우저 안에서만 실행되고 데이터베이스는 메모리에만 보관됩니다. CSV, SQL, 결과는 기기를 벗어나지 않으며 탭을 닫으면 사라집니다.
어떤 SQL과 파일 형식을 지원하나요?
입력은 CSV(쉼표, 세미콜론, 탭, 파이프 구분)입니다. 엔진은 진짜 SQLite이므로 표준 SELECT 조회 — WHERE, ORDER BY, GROUP BY, HAVING, LIMIT, 집계, 서브쿼리, 조인 — 을 지원합니다. CSV를 불러오면 새 테이블이 만들어지므로 손실이 있는 재인코딩이 아니라 값을 데이터베이스로 읽어 들이는 것뿐입니다.
숫자 비교가 왜 텍스트처럼 동작하나요?
아무것도 추측하거나 잃지 않도록 모든 열이 TEXT로 저장되며, 그래서 SQLite가 문자열로 정렬하고 비교합니다. 실제 숫자가 필요하면 조회에서 캐스트하세요 — 예: ORDER BY CAST(price AS REAL) DESC 또는 WHERE CAST(qty AS INTEGER) > 100.
열과 테이블 이름은 어떻게 정해지나요?
열 이름은 (헤더 체크박스를 켠 상태에서) 헤더 행에서 가져와 유효한 SQL 식별자로 정리되고 충돌은 중복을 제거합니다. 헤더가 없으면 col1, col2 등이 됩니다. 테이블 이름은 기본값이 t이며 CSV를 불러오기 전에 바꿀 수 있습니다.