Nexa SQL 아이콘

Nexa SQL 사용 설명서

v0.7.0 기준 최종 수정 2026-11-07

개요

Nexa SQL은 Windows · macOS · Linux에서 똑같이 생기고 똑같이 동작하는 가벼운 SQL 클라이언트(IDE) 와 명령줄 도구 nsql 을 한 묶음으로 제공합니다. 전부 Rust로 작성한 단일 실행 파일이며, 자체 CPU 래스터라이저로 화면을 직접 그려 Qt · WebView · Electron을 쓰지 않습니다.

DB 개발자와 DBA가 매일 쓰는 도구를 목표로 합니다.

  • SQL*Plus식 스크립트를 모든 DBMS에서 — VAR · EXEC :V := … · SELECT … INTO :V · PRINT · DEFINE/&치환 · REF CURSOR · 편집기 안의 CONNECT가 Oracle뿐 아니라 SQL Server · PostgreSQL · SQLite에서도 같은 문법으로 동작합니다. SQL Server에서는 여러 배치(GO)를 넘어 같은 변수를 이어 씁니다.
  • GUI와 CLI가 같은 엔진 — 화면에서 돌린 스크립트를 nsql run으로 그대로 배치 실행할 수 있고, 연결 프로필 · 설정 · 북마크를 GUI와 CLI가 공유합니다.
  • Sublime Text 관습의 편집기 — 단축키 기본값이 Sublime Text와 같고(Goto Anything Ctrl+P · 명령 팔레트 Ctrl+Shift+P · 다중 커서), 확장은 Sublime 패키지와 비슷한 폴더 구조로 설치합니다.
  • 결과 그리드에서 바로 편집 · 필터 — 단일 테이블 결과는 셀을 고쳐 한 트랜잭션으로 적용하고, 엑셀식 값 필터와 조건 바로 결과를 좁힙니다.
  • 지원 DBMS(v0.7.0) — Oracle(Thin · OCI) · SQL Server · PostgreSQL · MySQL/MariaDB · SQLite · DuckDB · IBM Db2 · ClickHouse, 그리고 ODBC 드라이버가 있는 DBMS에 접속합니다(DBMS별 지원 수준 참고).
  • 드라이버는 설치본과 분리 — 설치본에는 Oracle OCI 드라이버만 들어 있고, 나머지는 처음 접속할 때 서명된 패키지를 내려받아 설치합니다. 폐쇄망용 오프라인 번들도 있습니다(드라이버 설치).

Nexa SQL 메인 화면 — 객체 탐색기 · 편집기 · 결과 그리드

참고 앱 소개 페이지는 /apps/nexa-sql에서 볼 수 있습니다. 소스 코드와 릴리스는 GitHub 저장소, 기능별 자세한 설명은 위키에 있습니다.

시스템 요구사항

OS요구사항제공 설치본
WindowsWindows 10 1809(빌드 17763) 이상 · x64.msi (컴퓨터 단위 설치)
macOSmacOS 11 Big Sur 이상 · Apple Silicon · Intel 공용(Universal).pkg · .dmg · Homebrew Cask
Linuxx86_64 · glibc 2.34 이상.deb · .rpm · APT/DNF 저장소
  • Linux 권장 패키지: libx11-6 · libxkbcommon0 · libwayland-client0과 한글 표시를 위한 fonts-noto-cjk(RPM은 libxkbcommon · google-noto-sans-cjk-fonts)가 권장 의존으로 함께 설치됩니다.
  • 포터블(무설치) 판은 없습니다. 설치본만 배포합니다.

DBMS별로 따로 필요한 것

DBMS따로 필요한 것
Oracle (Thin · 기본)없음. 첫 접속 때 oracle-thin 드라이버가 자동 설치됩니다. 서버는 12c 이상이어야 합니다.
Oracle (OCI)Oracle Instant Client가 필요합니다(Windows oci.dll · Linux libclntsh.so · macOS libclntsh.dylib). 설치본에 들어 있지 않으므로 Oracle 사이트에서 Basic 패키지를 받아 두세요. 없으면 접속 시 DPI-1047 오류가 납니다. TNS 별칭으로 접속하려면 tnsnames.ora가 있는 TNS_ADMIN 폴더도 필요합니다. Oracle 11g 서버와 Thin이 못 하는 기능은 이 경로를 씁니다.
SQL Server · PostgreSQL · MySQL/MariaDB · SQLite · DuckDB · ClickHouse없음(첫 접속 때 드라이버 패키지 자동 설치)
IBM Db2 (LUW)없음(네이티브 DRDA 드라이버 · IBM 클라이언트 불필요). ?driver=odbc로 ODBC 경로를 고를 때만 IBM clidriver가 필요합니다.
ODBC 경유(Tibero · Altibase · CUBRID · SAP HANA · Informix · MS Access 등)벤더 ODBC 드라이버와 필요하면 DSN. Linux · macOS의 ODBC 드라이버 패키지는 드라이버 관리자를 함께 담고 있어 unixODBC를 따로 설치하지 않아도 됩니다. MS Access는 Windows ACE, Linux · macOS MDBTools를 씁니다.

참고 Tibero · Altibase · CUBRID · SAP HANA · Informix는 ODBC 프리셋이며, MS Access 지원은 실험 단계입니다. 벤더 서버 전부를 실서버로 검증했다고 확인되지는 않았습니다.

설치와 제거

모든 설치 파일은 GitHub Releases에 있고, 함께 올라가는 sha256sums.txt로 내려받은 파일을 검증할 수 있습니다.

주의 현재 빌드는 코드 서명이 없습니다. 직접 내려받아 실행하면 Windows SmartScreen이나 macOS Gatekeeper 경고가 뜹니다. 아래 OS별 안내를 따르세요.

설치 채널 현황

각 채널을 2026-11-07에 직접 조회한 결과입니다.

채널명령상태
GitHub Releases설치 파일 직접 받기0.7.0
Homebrew Cask (macOS)brew install --cask kiros33/tap/nexa-sql0.7.0
APT · DNF 저장소 (Linux)sudo apt install nexa-sql / sudo dnf install nexa-sql0.7.0 (저장소 등록 필요)
Chocolatey (Windows)choco install nexa-sql0.7.0 (2026-11-07 승인)
winget (Windows)winget install SosomLab.NexaSQL아직 등록 전 — 첫 제출 PR #447007(현재 0.5.0)이 사람 검토 대기 중

참고 winget만 아직 등록 전입니다. Windows에서는 Chocolatey나 GitHub Releases의 MSI를 쓰세요. Chocolatey는 0.2.8 · 0.2.9를 건너뛰는 등 일부 버전만 올라갑니다.

Windows

  1. Releases에서 nexa-sql-0.7.0-windows-x64.msi를 받습니다.
  2. 더블클릭해 설치합니다. 설치 중에 nsql을 PATH에 추가하는 항목과 .sql 파일 연결(선택)을 고를 수 있습니다.
  3. SmartScreen이 “Windows의 PC 보호” 창을 띄우면 추가 정보 → 실행을 누릅니다.

조용한 설치(관리 스크립트용):

msiexec /i nexa-sql-0.7.0-windows-x64.msi /qn

받은 파일 검증:

Get-FileHash .\nexa-sql-0.7.0-windows-x64.msi -Algorithm SHA256

제거: 설정 ▸ 앱(프로그램 추가/제거)에서 Nexa SQL을 제거합니다.

macOS

Homebrew로 설치 (권장)

brew install --cask kiros33/tap/nexa-sql

Cask는 설치할 때 macOS 격리 표식을 떼어 주므로 경고 없이 바로 실행되고, nsql도 Homebrew의 bin에 연결됩니다. 갱신은 brew upgrade --cask kiros33/tap/nexa-sql입니다.

설치 파일로 설치

  • nexa-sql-0.7.0-macos-universal.pkg — 설치기를 실행하면 /Applications/Nexa SQL.app과 /usr/local/bin/nsql 링크가 만들어집니다.
  • nexa-sql-0.7.0-macos-universal.dmg — 앱을 응용 프로그램 폴더로 끌어 놓습니다. CLI 링크 방법은 dmg 안의 안내문을 보세요.

직접 받은 앱이 Gatekeeper에 막히면 격리 표식을 떼어 냅니다.

xattr -dr com.apple.quarantine "/Applications/Nexa SQL.app"

제거

# pkg/dmg로 설치한 경우
sudo "/Applications/Nexa SQL.app/Contents/Resources/uninstall.sh"
# Homebrew로 설치한 경우(설정·프로필까지 지우려면 --zap)
brew uninstall --cask kiros33/tap/nexa-sql

Linux

패키지 저장소 등록 후 설치 (권장 — apt upgrade/dnf upgrade로 갱신)

APT (Debian · Ubuntu)

저장소 등록 (최초 1회) — 다른 SosomLab 앱으로 이미 등록했다면 건너뜁니다.

sudo curl -fsSLo /usr/share/keyrings/sosomlab-archive-keyring.gpg https://pkg.sosomlab.com/sosomlab-archive-keyring.gpg
sudo curl -fsSLo /etc/apt/sources.list.d/sosomlab.sources https://pkg.sosomlab.com/apt/sosomlab.sources

설치

sudo apt update && sudo apt install nexa-sql

RPM (Fedora · RHEL 계열)

저장소 등록 (최초 1회) — 다른 SosomLab 앱으로 이미 등록했다면 건너뜁니다.

sudo curl -fsSLo /etc/yum.repos.d/sosomlab.repo https://pkg.sosomlab.com/rpm/sosomlab.repo

설치

sudo dnf install nexa-sql

설치 파일로 설치

sudo apt install ./nexa-sql_0.7.0_amd64.deb       # 또는 sudo dpkg -i …
sudo dnf install ./nexa-sql-0.7.0-1.x86_64.rpm

제거: sudo dpkg -r nexa-sql 또는 sudo dnf remove nexa-sql.

참고 앱을 제거해도 설정과 연결 프로필은 사용자 폴더에 남습니다(설정과 데이터 저장 위치). 완전히 지우려면 그 폴더를 직접 삭제하세요.

시작하기

첫 실행

  1. 앱을 실행합니다. 화면 언어는 기본값 시스템이라 한국어 OS에서는 한국어로, 그 밖에는 영어로 뜹니다. Ctrl+Alt+L(macOS ⌘⌥L)을 누를 때마다 시스템 → English → 한국어 순으로 바뀝니다.
  2. 처음 실행하면 “로컬 SQLite 데모를 만들까요?” 라고 묻습니다. 지금 만들기를 누르면 서버 없이 바로 써 볼 수 있는 Demo 프로필이 생깁니다(SCOTT dept/emp 표와 sales 5,000행). 나중에 도움말 ▸ 샘플 데이터 만들기(Demo 프로필)… 로도 만들 수 있습니다. 데모에는 SQLite 드라이버가 필요합니다. 만들기가 실패하면 데모 만들기가 실패해요를 보세요.
  3. 접속 창(Ctrl+Shift+N, macOS ⌘⇧N)에서 Demo를 고르거나 접속 문자열을 넣고 접속합니다. 필요한 드라이버가 없으면 내려받아 설치한 뒤 접속합니다.
  4. 편집기에 문장을 쓰고 Ctrl+Enter(macOS ⌘↩)로 캐럿이 있는 문장을, F5로 스크립트 전체를 실행합니다.
SELECT * FROM emp ORDER BY sal DESC;

실행 인자로 바로 열기

nexa-sql Demo                                   # 저장된 프로필로 시작하면서 접속
nexa-sql -c "oracle://scott@dbhost:1521/ORCL"    # 접속 문자열로 접속(비밀번호는 창으로 물음)
nexa-sql sqlite:demo.sqlite                      # SQLite 파일
nexa-sql --fill prod                             # 접속 폼만 채우고 접속하지 않음
nexa-sql .                                       # 현재 폴더를 작업 폴더로(폴더 모드)

접속 관리

접속 문자열 형식

GUI 접속 창, 편집기의 CONNECT, CLI의 -c가 모두 같은 형식을 받습니다.

DBMS형식예
Oracleoracle://user:pass@host:port/serviceoracle://scott:tiger@dbhost:1521/ORCL
Oracle (SQL*Plus 꼴)user/pass@host:port/servicescott/tiger@dbhost:1521/ORCL
Oracle (관리자)끝에 as sysdbaoracle://sys@dbhost:1521/ORCL as sysdba
SQL Servermssql://user:pass@host:port/dbmssql://sa@srv:1433/mydb
PostgreSQLpostgres://user:pass@host:port/db (postgresql:// · pg://도 됨)postgres://app@dbhost:5432/appdb
MySQL · MariaDBmysql://user:pass@host:port/db (mariadb://도 됨)mysql://app@dbhost:3306/shop
IBM Db2 (LUW)db2://user:pass@host:port/dbdb2://db2inst1@dbhost:50000/SAMPLE
ClickHouseclickhouse://user:pass@host:port/dbclickhouse://default@dbhost:8123/logs?tls=required
SQLite (파일)sqlite:<경로>sqlite:C:\data\app.db · sqlite:./app.db
SQLite (메모리)sqlite::memory:서버 없이 시험할 때
DuckDBduckdb:<경로> · duckdb::memory:duckdb:a.duckdb
ODBCodbc:DSN=<이름> · odbc:Driver={…};Server=…;…odbc:DSN=TIBERO_DEV
MS Access (실험)access:<파일>access:C:/data/file.accdb
PostgreSQL 호환 프리셋redshift:// · cockroach:// · yugabyte:// · greenplum:// · timescale://PostgreSQL 드라이버를 씁니다
ODBC 프리셋tibero:// · altibase:// · cubrid:// · hana:// · informix://벤더 ODBC 드라이버가 먼저 필요합니다
  • 포트 생략 시 기본값: Oracle 1521 · SQL Server 1433 · PostgreSQL 5432 · MySQL 3306 · Db2 50000 · ClickHouse 8123(TLS 8443).
  • 비밀번호를 빼면 접속할 때 숨김 입력 창으로 묻습니다. 사람이 직접 칠 때는 이 방법을 권장합니다.
  • 비밀번호에 특수문자가 있으면 URL 형식(scheme://)에서 퍼센트 인코딩합니다: @ → %40, / → %2F, : → %3A, # → %23, % → %25. SQL*Plus 꼴은 인코딩을 풀지 않지만 마지막 @를 호스트 구분자로 쓰므로 비밀번호 안의 @는 그대로 통합니다.
  • 스킴 없이 방언만 지정하려면 ?dialect=oracle처럼 붙입니다. 이때도 @는 생략할 수 없습니다(사용자가 없으면 @dbhost:1521/ORCL).
  • 끝에 붙이는 매개변수: ?driver=thin|oci|<id>(이 접속에 쓸 드라이버) · ?ssh=user@host[:port]와 ssh_key=(SSH 터널) · ?tls= · ?sslmode=(전송 암호화).
  • 간략 접속: 접속 창 맨 위 칸에 문자열을 넣고 바로 접속을 누르면 프로필이 자동 저장됩니다(이름 = 방언-호스트-DB). 비밀번호는 저장되지 않습니다.

주의 명령줄에 쓴 비밀번호는 셸 기록과 프로세스 목록에 남습니다. 자주 쓰는 서버는 아래 연결 프로필로 저장하세요.

연결 프로필

프로필은 방언 · 호스트 · 포트 · DB · 사용자 · 비밀번호를 이름 하나로 저장합니다. GUI와 CLI가 같은 프로필 폴더를 공유하므로 한쪽에서 저장하면 다른 쪽에서 바로 씁니다.

  • GUI: 접속 창에서 이름 칸과 접속 정보를 채우고 저장합니다. 이후 이름만 골라 접속합니다.
  • CLI:
nsql conn add prod "oracle://scott@dbhost:1521/ORCL"     # 비밀번호는 숨김 입력으로 물음
nsql conn add pg1 -d postgres --host dbhost --port 5432 --db appdb --user app
nsql conn list                                           # 이름 · 방언 · 비밀번호 저장 여부(✓/-) · 대상
nsql conn test prod                                      # 실제로 붙어 보기
nsql conn env prod prd                                   # 서버 유형을 운영(PRD)으로 표시
nsql conn readonly prod on                               # 읽기 전용 프로필로
nsql conn deleted                                        # 지운 프로필 목록
nsql conn restore prod                                   # 지운 프로필 되살리기
nsql conn import <파일> --overwrite                      # 내보낸 프로필 가져오기(내보내기는 nsql conn export)
nsql conn rm prod
nsql conn var prod SCHEMA=HR                             # 이 프로필의 변수 지정(NAME= 은 삭제)
  • 프로필 이름은 영문 · 숫자 · _ · . · - 1~64자이며 -c prod, 스크립트의 CONNECT prod처럼 접속 문자열 자리에 그대로 씁니다.
  • 서버 유형(없음 · 개발 DEV · 테스트 TST · 운영 PRD)을 지정하면 운영 서버에는 PRD 칩이 표시되고, 운영 서버의 결과 그리드는 읽기 전용이 되며, 유형 변경은 두 번 확인합니다.
  • 읽기 전용 프로필(v0.6.0~): GUI · 스크립트 · 가져오기에서 데이터와 스키마 변경을 막습니다. nsql conn readonly나 접속 문자열 ?readonly=on으로 켭니다.
  • 지운 프로필 복구(v0.6.0~): 접속 창에서 지운 프로필은 profiles/.deleted/로 옮겨져 30일 보관되고(connect.deleted_keep_days) 토스트의 되돌리기나 nsql conn restore로 되살립니다. nsql conn rm은 바로 지웁니다.
  • 프로필 옮기기(v0.6.0~): 파일 메뉴나 nsql conn export · nsql conn import로 비밀번호 없이 내보내고 가져옵니다.

비밀번호는 어떻게 보관되나

  • 프로필의 비밀번호만 ChaCha20-Poly1305로 암호화해 저장하고, 호스트 · 사용자 이름은 목록에 보여야 하므로 평문입니다.
  • 암호화 키는 이 PC의 기기 키(device.key)에서 만듭니다. Windows는 DPAPI로 보호되어 같은 Windows 계정에서만 풀립니다. macOS · Linux는 소유자만 읽을 수 있는(0600) 파일로 보관합니다 — 폴더째 복사해 가면 함께 풀릴 수 있으니 주의하세요.
  • 프로필에 저장하지 않고 접속할 때 입력한 비밀번호는 이번 실행 동안만 메모리에 암호화해 들고 있다가 같은 서버 · 계정의 새 탭, 재접속, 객체 탐색기에 다시 씁니다. 디스크에는 쓰지 않으며, 설정 connect.remember_session_password를 끄면 매번 묻습니다.

Oracle 드라이버와 클라이언트 지정

Oracle 드라이버는 둘입니다. 기본값은 Thin(oracle.driver = thin)으로 Instant Client가 필요 없고, OCI는 Instant Client를 써서 실행 중 취소 · 암묵 결과 집합 · OS 인증 · 네이티브 네트워크 암호화 · 11g 서버까지 지원합니다. 접속 창의 DB 종류 Oracle (Thin) · Oracle (OCI)나 접속 문자열 ?driver=oci로 접속마다 고를 수 있습니다.

OCI를 쓸 때는 설정 ▸ DBMS ▸ Oracle에서 자동(기본) 또는 직접 지정을 고릅니다. 자동이면 NSQL_ORACLE_CLIENT_DIR → ORACLE_HOME → OS 라이브러리 검색 경로 → 잘 알려진 설치 폴더 순으로 찾고, 찾은 라이브러리 · 버전 · tnsnames.ora · sqlnet.ora 유무를 읽기 전용으로 보여 줍니다.

# 환경 변수로 지정(앱을 다시 시작해야 적용)
export NSQL_ORACLE_CLIENT_DIR=/opt/oracle/instantclient_21_13      # macOS · Linux
set NSQL_ORACLE_CLIENT_DIR=C:\oracle\instantclient_21_13            # Windows cmd

세션과 연결 끊김

  • 기본은 연결 하나를 여러 탭이 공유합니다. 편집기에서 CONNECT를 실행한 탭은 그 탭 전용 세션을 가집니다. 열린 세션은 세션 창에서 확인합니다.
  • VPN이 끊기는 등 서버에 닿지 않으면 그 서버의 세션과 탐색기를 모두 끊김으로 표시하고, 영향받는 공유 세션 · 전용 탭을 토스트에 나열하며, 서버가 다시 응답하면 자동으로 복구합니다(설정 net.watch · Windows · macOS · Linux). 서버에는 닿는데 한 세션만 끊기면 그 세션만 다시 연결하는 토스트가 뜹니다.
  • 자동 커밋은 기본 켬입니다(session.autocommit). 끄면 Ctrl+Alt+C(커밋) · Ctrl+Alt+R(롤백)으로 직접 확정합니다.
  • 호출 상한(session.call_timeout_secs · 기본 0 = 끔): Oracle · SQL Server에서 서버 호출 하나가 이 시간을 넘으면 끝냅니다. SQL Server는 소켓을 닫고 다음 실행 때 다시 접속합니다. 긴 질의에도 걸리니 필요할 때만 켜세요.

드라이버 설치

설치본에는 Oracle OCI 드라이버만 들어 있습니다. 나머지 드라이버는 처음 접속할 때 공식 저장소(SosomLab/nexa-sql)의 drivers-v* 릴리스에서 자동으로 받습니다(driver.auto_install · 기본 켬). 패키지는 SHA-256과 Ed25519 서명을 확인한 뒤 <설정 폴더>/drivers/에 설치합니다.

  • 드라이버 관리자: 보기 ▸ 드라이버에서 설치 · 갱신 · 삭제 · 파일에서 설치를 합니다.
  • 갱신 안내(driver.check_updates · 기본 켬): 기동할 때 하루 한 번 드라이버 색인을 읽어 새 버전이 있으면 드라이버당 한 줄로 알려 주고 [모두 갱신] 버튼을 보여 줍니다.
  • 접속 때 자동 갱신(driver.auto_upgrade · 기본 켬 · v0.5.0~): 확장 드라이버로 접속할 때 캐시된 색인에 새 판이 있으면 먼저 내려받아 설치합니다. 실패해도 접속은 막지 않습니다. 설치된 판을 유지하려면 끄세요.
  • 명령줄:
nsql driver search                    # 색인과 설치 상태
nsql driver install db2               # 설치
nsql driver update --check            # 갱신 목록만 보기
nsql driver list                      # 설치된 드라이버
nsql driver rm db2                    # 삭제
nsql driver install --file nsql-drivers-all-0.1.10-windows-x86_64.zip   # 폐쇄망: 오프라인 번들
  • 폐쇄망: driver.auto_install · driver.auto_upgrade · driver.check_updates를 끄고, 다른 PC에서 받은 nsql-drivers-all-<버전>-<os>-<arch>.zip을 위 명령이나 드라이버 관리자로 설치하세요. 프록시는 HTTPS_PROXY를 따릅니다.
  • 패키지는 Windows x64 · Linux x86_64 · Apple Silicon · Intel macOS용이 있습니다.

SSH 터널

모든 접속에 시스템 ssh 를 쓴 포트 포워딩을 붙일 수 있습니다. 접속 창의 SSH 칸이나 접속 문자열에 적으며, 프로필에 함께 저장됩니다(키는 경로만 저장).

nsql run -c "postgres://[email protected]:5432/appdb?ssh=me@bastion:22&ssh_key=~/.ssh/id_ed25519" report.sql
  • 키 인증만 됩니다. ~/.ssh/config · 에이전트 · 기본 키를 그대로 쓰고 비밀번호를 묻지 않습니다. 모르는 호스트는 StrictHostKeyChecking=accept-new로 처음 한 번 받아들입니다.
  • 같은 대상의 세션은 ssh 프로세스 하나를 함께 쓰고, 마지막 세션이 닫히면 끝납니다. 설정은 ssh.command(비우면 터널 비활성) · ssh.connect_timeout_secs(기본 15초)입니다.
  • TLS와 함께 쓰면 드라이버가 보는 호스트가 127.0.0.1이므로 verify_identity 대신 verify_ca를 쓰세요.

전송 암호화 (TLS)

  • PostgreSQL: v0.4.0부터 TLS를 지원합니다. pg.tls(또는 ?tls= · ?sslmode=)로 고릅니다. 기본 preferred는 TLS를 시도하고 안 되면 평문으로 접속합니다. required = 암호화만(인증서 검증 없음) · verify_ca = 인증서 사슬 검증 · verify_identity = 사슬 + 호스트 이름 검증. CA 파일은 pg.tls_ca나 sslrootcert=로 지정합니다. 클라이언트 인증서는 아직 지원하지 않습니다.
  • SQL Server: mssql.encrypt로 전 구간 또는 로그인만 암호화합니다. 서버 인증서는 검증하지 않습니다.
  • MySQL · ClickHouse · Db2: ?tls=required처럼 접속 문자열로 지정합니다(MySQL은 mysql.tls 설정도 있음).

주의 신뢰할 수 없는 네트워크에서는 평문으로 떨어질 수 있는 preferred 대신 verify_ca 이상을 쓰세요.

운영 접속 보호

서버 유형이 운영(PRD)인 접속의 GUI에는 다음 보호 장치가 있습니다. CLI nsql은 보류하지 않습니다.

  • 보류 커밋: 변경은 명시 트랜잭션 안에서 실행되고 상단의 빨간 커밋 버튼을 두 단계로 눌러야 확정됩니다. 보류 카드에는 [롤백] · [커밋 후 계속] 버튼이 있습니다. 보류 중에는 스크립트의 COMMIT;이 거부되고, 암묵 커밋을 일으키는 DDL과 같은 연결의 다른 탭 변경이 막힙니다.
  • 객체 백업: DROP · CREATE OR REPLACE · ALTER · TRUNCATE · RENAME 전에 현재 DDL을 backups/objects/에 저장합니다. 운영 접속에서 백업이 실패하면 문장을 막습니다.

편집기

편집기는 Sublime Text의 관습을 따릅니다. 기본 단축키 세트도 Sublime Text와 같습니다(단축키).

주요 기능

  • 다중 커서 · 다중 선택 — Ctrl+D(다음 같은 낱말 추가) · Alt+F3(같은 낱말 전부) · Ctrl+Shift+L(선택을 줄마다 커서로) · Ctrl+Alt+↑/↓(위아래 줄에 커서 추가).
  • 줄 편집 — 줄 복제 · 삭제 · 위아래로 옮기기 · 합치기, 주석 토글(Ctrl+/), 대/소문자 변환(Ctrl+K, Ctrl+U / Ctrl+K, Ctrl+L).
  • 선택 되돌리기(Soft Undo) — Ctrl+U로 커서 · 선택 이동만 되돌립니다.
  • 코드 완성(IntelliSense) — 문맥에 맞는 테이블 · 컬럼 · 루틴 · 데이터 타입 · 키워드를 제안합니다. 외래 키에서 JOIN 조건을 만들어 주고, 함수 인자는 시그니처 카드로 보여 줍니다. 직접 부를 때는 Ctrl+Space(macOS ⌃Space), 메타 캐시를 새로 읽을 때는 Ctrl+Shift+R.
  • Ctrl 객체 링크 — Ctrl(macOS ⌘)을 누르는 동안 테이블 · 컬럼 · 루틴 이름이 링크가 되어, 코멘트 툴팁과 동작 버튼(탐색기에서 보기 · 200행 보기 · 설명 복사)이 붙은 카드를 띄웁니다. v0.2.6부터 Ctrl+클릭은 캐럿 추가/제거이고 Ctrl+우클릭은 편집기 메뉴입니다(설정 ctrl.click · ctrl.right_click으로 옛 동작 복원). Ctrl+Shift+클릭은 이름 - 설명 복사입니다. F4 = 객체 탐색기에서 보기.
  • Goto Anything — Ctrl+P로 열린 탭 → 최근 파일 → 프로젝트 폴더 순으로 파일을 퍼지 검색합니다. 접두어로 > 명령 · : 줄 번호 · @ 심볼 · % 본문 · ? 도움말을 고르고, 이름:줄 형식도 받습니다. Ctrl+R은 심볼로 바로 이동합니다.
  • SQL 포맷 — Shift+Alt+F로 내장 포맷터를 적용합니다(선택 영역 · 캐럿 문장 · 문서 전체). 콤마 위치 · 공백/탭 · WHERE 1=1 · 별칭 정렬 같은 공통 옵션(format.*)이 있고, 미리보기 탭으로 결과를 먼저 볼 수 있습니다. 포맷 프리셋(format.preset: default · kiros33 · river · custom)은 한 번에 적용하고 5초 안에 되돌립니다. river(콤마 앞) 정렬과 PL/SQL · T-SQL · PL/pgSQL 블록 재들여쓰기(format.plsql)도 있습니다. 확장 포맷터를 기본으로 지정할 수도 있습니다.
  • 북마크 — Ctrl+F2 토글 · F2/Shift+F2 다음/이전 · Ctrl+Shift+0~9 번호 북마크 지정 · Ctrl+0~9 그 번호로 이동. 거터 · 미니맵 · 줄 끝 라벨로 표시되고 북마크 패널(Ctrl+Shift+B)에서 모아 봅니다. v0.5.0부터 서버 객체의 소스를 다시 여는 객체 DDL 북마크 · 메모 · 그룹 간 끌어 놓기가 있습니다.
  • 파일 검색 — Ctrl+Shift+F로 폴더 전체를 검색합니다(.gitignore 일부 규칙 반영). CLI nsql grep과 같은 엔진입니다.
  • 글꼴 크기 — Ctrl+= / Ctrl+- / Ctrl+휠로 포커스가 있는 영역(편집기 또는 결과 그리드)만 바꿉니다.
  • 한글 입력 — 조합 중 입력과 되돌리기가 한 단위로 처리됩니다.
  • 오류 자리로 캐럿 — 문장이 실패하면 서버가 알려 준 위치로 캐럿이 갑니다(editor.error_goto). 구문 오류면 그 앞에서 키워드와 한두 글자 다른 낱말(예 DISTINC)을 찾아 그 자리로 옮기고, Output 탭에 Suspected typo 줄을 남깁니다(editor.error_analyze).
  • Insert Sequence — Ctrl+Alt+N(macOS ⌘⌥N)으로 다중 캐럿 자리에 숫자 · 문자 · 날짜 · 시각 · 목록을 차례로 넣습니다. 표현식은 1+1처럼 쓰고 입력창에 ?를 치면 도움말이 나옵니다. 내장 확장이라 설정과 단축키는 확장 영역에 있습니다.
  • 아웃라인 — 선언된 이름(CREATE 대상 · 루틴 · CTE · DEFINE · 커서 등)을 트리로 보여 주고 캐럿을 따라갑니다. 일반 문장은 필터 옆 토글(Select · DML · DDL · Other)로 켭니다.
  • 찾기 — Ctrl+F를 열면 검색어가 전체 선택됩니다. 여러 줄을 선택한 채 열면 선택을 그대로 두며, 자동 범위는 editor.find_auto_scope로 고릅니다. 열 모드의 Home/End는 캐럿마다 자기 줄 안에서 움직입니다.
  • 이진 파일 — 이미지 · 압축 · 실행 파일은 읽기 전용 안내 탭으로 열립니다.
  • 구문 색(v0.6.0~) — 자료형 · 접속한 방언의 내장 함수 · 바인드 변수 · 문장 종결자 · 명령에 각자 색을 씁니다. 프리셋은 editor.color_preset(nexa · dbeaver · golden)이고, 키워드 판정은 방언별 예약어 표를 따릅니다.
  • 미니맵(v0.5.0~) — 보기 ▸ 미니맵으로 켜고 끄며, 좁은 편집기와 유휴 때 자동으로 숨습니다. 배율(editor.minimap_scale) · 왼쪽 배치 · 저장 뒤 수정 줄 · git 변경 줄을 지원합니다.
  • 줄 끝 선택(v0.6.0~) — 저장 창에서 유지 · LF · CRLF · CR을 고릅니다.

코드 완성 팝업

프로젝트와 작업 환경

모드켜는 법상태가 놓이는 곳
파일 모드그냥 실행사용자 설정 폴더
폴더 모드nexa-sql <폴더>그 폴더의 .nsql/
프로젝트 모드<이름>.nsql-project 파일 열기프로젝트 파일 안

프로젝트 파일은 폴더 목록과 열린 탭 순서 · 캐럿 위치 · 북마크 · 미저장 스크립트 본문까지 담아, 다시 열면 마지막 작업 상태가 돌아옵니다. 자동 저장(project.autosave)은 기본 켬이며 30초마다 바뀐 것이 있을 때만 저장합니다. 마지막에 붙어 있던 접속은 표식만 남고 자동으로 다시 접속하지 않습니다.

  • 프로젝트 설정(v0.5.0~): .nsql-project 안에 프로젝트별 설정 절이 있습니다. 설정 창의 프로젝트 스위치를 켜면 허용된 키만 보이고, 카드에 값의 출처가 표시됩니다. 문법별 들여쓰기와 열 때 들여쓰기 감지(editor.detect_indent)도 있습니다.
  • 미저장 탭 보관(project.hot_exit · 기본 always · v0.5.0~): 프로젝트 없이 미저장 탭을 둔 채 종료하면 묻지 않고 보관했다가 다음 시작 때 복원합니다. 종전처럼 물으려면 off로 두세요.
  • Goto Anything 색인은 프로젝트 루트의 .gitignore를 따릅니다(project.gitignore · 기본 켬).

큰 파일

스크립트가 커지면 탭마다 단계를 정해 부담이 큰 부가 기능만 끕니다. 편집 · 선택 · 찾기 · 실행은 크기와 관계없이 그대로 됩니다.

단계기준(둘 중 하나)꺼지는 것
L15 MB 또는 100,000줄미니맵 · 같은 낱말 강조 · 줄 변경 표시 · 괄호 색
L220 MB 또는 300,000줄위 + 구문 강조
열기 전 확인50 MB—

이 탭만 모두 켜려면 명령 팔레트에서 Toggle Large File Optimizations (This Tab) 을 실행합니다.

쿼리 실행과 결과 그리드

실행

동작Windows · LinuxmacOS
캐럿이 있는 문장 실행Ctrl+Enter⌘↩
새 결과 탭에 실행Ctrl+\⌘\
스크립트 전체 실행F5F5
다음 · 이전 문장으로Alt+↓ / Alt+↑⌥↓ / ⌥↑
  • 문장은 SQL*Plus처럼 ; · 단독 / · GO로 나뉩니다.
  • 실행 중에는 실행 상태 카드에 문장 · 시작 시각 · 경과 · 행 수 · 전송량이 보입니다. ■ 로 중지하고, 서버가 취소에 응하지 않으면 ■를 한 번 더 눌러 강제 중지합니다.
  • 객체 탐색기에서 소스 열기로 연 프로시저 · 패키지 · 뷰 등의 탭에서 F5는 본문을 나누지 않고 한 단위로 보내 한 번에 컴파일합니다.
  • 실행 계획 검토: 실행 ▸ 실행 계획(Ctrl+Alt+X, macOS ⌘⌥X)은 문장을 실행하지 않고 계획 트리와 자동 검토 탭을 보여 줍니다. 실행 ▸ 실제 실행 계획은 문장을 실제로 실행해 실측 행 수 · 시간을 보여 주므로, DML이면 데이터가 바뀝니다. CLI는 nsql explain [--analyze] [--raw]입니다.

결과 그리드

  • 가져오기: 기본은 200행씩(grid.max_rows) 가져오고, 스크롤 끝에서 다음 200행을 더 읽습니다. Σ로 건수를 세고 전체 조회로 끝까지 읽습니다. 행 상한을 0으로 두면 첫 묶음이 바로 보이고 나머지가 도착하는 대로 이어 붙습니다. 결과 메모리는 1 GB(grid.memory_budget_mb)에서 멈춥니다.
  • 결과 일관성: 서버 커서 없이 OFFSET으로 다음 페이지를 받을 때 앞 페이지 끝 행을 겹쳐 받아 비교하고, 서버 결과가 바뀌었으면 누락 · 중복 대신 오류로 멈춥니다(grid.overlap_check · 기본 켬). 처음부터 다시 받아야 할 때는 먼저 묻습니다(grid.refetch_confirm).
  • 여러 결과: REF CURSOR나 결과 집합이 여럿이면 결과1 · 결과2 … 탭이 열립니다.
  • 열 머리 타입 배지: AZ(문자) · 09(숫자) · DT(날짜) · ID · TF · BI · EX로 열의 타입을 한눈에 보고, 머리에 마우스를 올리면 데이터 타입 카드가 뜹니다.
  • 필터: 열 머리 깔때기로 엑셀식 값 목록(모두 선택 · 검색 · 다중 선택)을 열고, 필터 칩 · OR 모드로 조합합니다. 그리드 아래 조건 바에 식을 쓰고 Enter를 누르면 서버에 다시 조회합니다(열 머리를 끌어다 놓아도 됨).
  • 자연 정렬: ITEM2 < ITEM10처럼 숫자 부분을 값으로 비교합니다(ui.sort_natural).
  • Output 탭: DBMS_OUTPUT · PRINT/RAISERROR · RAISE NOTICE · 컴파일 결과 · 오류 · 문장 완료 줄이 모입니다(Ctrl+Shift+O). 오류 줄을 두 번 클릭하면 편집기의 그 줄로 갑니다. 오류 줄은 빨강, 경고 줄은 노랑이고, 탭 안에서 Ctrl+F로 찾습니다.
  • Oracle 라이브 모니터(v0.6.0~): 실행 중 DBMS_PIPE(oracle.live.pipe)와 V$SESSION_LONGOPS 진행(oracle.live.longops)을 로그의 Live 종류로 봅니다. CLI는 nsql run --live입니다.
  • 값 보기: Shift+Enter · Shift+더블클릭으로 값 창을 엽니다. 편집 가능한 글 셀은 NULL · 빈 문자열 · 값 중에서 고릅니다.
  • 복사: 우클릭 메뉴에 머리글과 함께 복사(공백 · 콤마 · 탭)와 머리글만 복사가 있습니다.
  • 트랜잭션 로그: 실행한 문장마다 시간 · 행 수 · 결과 · 트랜잭션 결과(커밋됨 · 롤백됨 · 대기)를 남기고, 행을 누르면 보낸 문장 / 바인드 변수 / 값을 치환한 문장 세 층으로 보여 줍니다.

결과 그리드 아래 조건 바

그리드에서 데이터 편집

단일 테이블을 조회한 결과는 셀을 바로 고칠 수 있습니다. 고친 내용은 적용(✓) 을 누를 때까지 서버에 가지 않고, 적용은 한 트랜잭션으로 묶여 하나라도 실패하면 전부 되돌아갑니다.

  • 편집 시작: Enter · F2 · 더블클릭 · 그냥 타이핑. 확정: Enter · Tab. 취소: Esc. 날짜 · 시각 셀은 Ctrl+; = 열 종류에 맞는 지금 · Ctrl+Shift+; = 현재 시각.
  • 행 추가 · 복제(Ctrl+D) · 삭제, 탭/줄로 구분된 표 붙여넣기, 그리드 전용 되돌리기, 보낼 SQL 미리보기를 지원합니다.
  • 행은 PK/UNIQUE 키 → (키가 결과에 없으면) 숨은 키 열 → DBMS 행 식별자(Oracle ROWID · SQLite rowid · PostgreSQL ctid) → 비교 가능한 모든 열 순서로 식별합니다.
  • JOIN · GROUP BY · DISTINCT · UNION · 식 열이 있는 결과, 뷰 · 프로시저 결과, 운영(PRD) 서버는 읽기 전용입니다. ClickHouse는 그리드 편집을 지원하지 않습니다.

객체 찾기와 탐색기 검색

객체 찾기 창(Ctrl+Alt+F, macOS ⌘⌥O · 보기 ▸ 객체 찾기)은 연결된 모든 서버에서 객체 이름 · 설명(코멘트) · 컬럼 이름 · 소스 본문을 한 번에 찾습니다.

  • 대소문자 · 낱말 · 정규식 토글, 스키마 필터, 서버 다중 선택, SQL Server 전 데이터베이스 스위치, 결과 거르기 상자를 제공합니다. 언제든 중지할 수 있습니다.
  • 일치 줄을 클릭하면 그 객체의 소스가 그 줄에서 미리보기 탭으로 열립니다(findobj.preview_click). 더블클릭은 정식 탭, 객체 탐색기에서 보기는 컬럼까지 찾아 줍니다.
  • 객체 탐색기 필터는 기본으로 서버 전체를 찾습니다(explorer.search_scope). 설명 포함 토글(explorer.search_desc)을 켜면 코멘트에도 일치합니다.
  • 탐색기 행을 편집기 · 필터 상자 · 조건 바로 끌어 놓으면 이름이 들어갑니다(Shift = 전체 이름).

세션 변수 (SQL*Plus 방식)

Nexa SQL의 대표 기능입니다. SQL*Plus의 변수 문법을 Oracle 밖의 DBMS에서도 그대로 쓰도록 엔진이 각 방언으로 바꿔 보냅니다.

두 종류의 변수

종류문법어디서 처리되나
바인드 변수VAR v NUMBER · EXEC :v := 값 · EXEC :v := 식 · 문장 안의 :v리터럴 대입은 클라이언트(서버 왕복 없음), 식은 서버에서 계산. 값은 진짜 바인드로 전달
치환 변수DEFINE v = 글 · &v · &&v · ${v[:형식]} · ${env:이름}문장을 보내기 전에 클라이언트가 글자로 바꿈

예제

-- 선언과 리터럴 대입(서버 왕복 없음)
VAR V_LIMIT NUMBER = 3
EXEC :V_DEPT := 'IT'

-- 서버 식 대입
EXEC :V_CNT := (SELECT COUNT(*) FROM emp)

-- 한 행을 여러 변수로(0행 · 여러 행이면 오류)
EXEC SELECT MAX(sal), MIN(sal) INTO :V_MAX, :V_MIN FROM emp WHERE dept = :V_DEPT;

-- 뒤 문장에서 바인드로 사용
SELECT * FROM emp WHERE sal >= :V_MIN AND ROWNUM <= :V_LIMIT;

PRINT V_MAX
SHOW VARIABLES

같은 스크립트가 Oracle에서는 BEGIN … END; 블록과 OUT 바인드로, SQL Server에서는 sp_executesql과 꼬리 SELECT로, PostgreSQL · SQLite에서는 $n 바인드와 한 행 조회로 바뀌어 실행됩니다. 어떻게 바뀌는지는 서버 없이 nsql plan -d mssql 파일.sql로 미리 볼 수 있습니다.

참고 SQL Server의 @이름은 T-SQL 자신의 변수라 배치(GO)가 끝나면 사라집니다. 배치를 넘어 값을 들고 다니려면 :이름을 쓰세요.

범위(층)와 지우기

  • 변수는 탭 → 연결 공유(SHARE) → 글로벌(GLOBAL) 층에 살고, 같은 이름이면 탭 값이 우선합니다. 선언하면서 층을 정할 수 있습니다: VAR A NUMBER = 10 GLOBAL · VAR x VARCHAR2(30) SHARE.
  • 대입은 그 변수가 사는 층에 들어갑니다. 이 탭에서만 다른 값을 쓰려면 먼저 VAR A로 탭에 선언하세요.
  • 지우기: VAR 이름 DROP [GLOBAL] · VAR CLEAR · VAR CLEAR GLOBAL · VAR CLEAR ALL.
  • 타입 없이 생긴 변수는 값에 따라 타입이 바뀌고, 타입을 적어 선언하면 고정됩니다.
  • 변수 창(보기 ▸ Variables · 툴바 [변수])에서 모든 층의 이름 · 타입 · 값을 보고 고칠 수 있습니다. PASSWORD처럼 비밀로 보이는 이름은 가려집니다.
  • 입력 창: 값이 없는 변수는 입력 창이 타입과 서버로 보낼 형태를 미리 보여 주며 묻습니다. 편집기에서 변수 위에 마우스를 올리면 값 카드가 뜹니다.
  • 접속 프로필 변수: 프로필에 변수를 붙여 둡니다(nsql conn var). DEFINE 이름 SHARE|LOCAL|GLOBAL로 치환 변수의 층도 정합니다.
  • 바인드 가시성: 실행 로그에 bind N · declare-prepend · inline N으로 값을 어떻게 보냈는지 나옵니다.

변수 창

치환 변수와 &

  • ${v:q} = SQL 문자열 상수로 감싸기 · ${v:id} = 식별자 인용 · ${env:PATH} = OS 환경 변수.
  • 스크립트 인자는 &1 &2 …로 받습니다(nsql run file.sql arg1 arg2).
  • DBMS별 & 기본 동작(v0.1.9~): Oracle은 SQL*Plus처럼 정의 안 된 &이름을 입력 창으로 묻습니다. SQL Server · PostgreSQL · SQLite는 DEFINE · :setvar로 정의한 이름만 바꾸고 정의 안 된 &x는 그대로 보내므로 'R&D'에 입력 창이 뜨지 않습니다. 설정 script.define(auto · on · off)이나 스크립트의 SET DEFINE ON/OFF로 바꿉니다. 문자열 안의 &를 글자 그대로 두려면 script.define_in_strings를 끕니다(v0.5.0~ · 기본 켬).
  • 내장 변수: ${workspaceFolder} · ${file} · ${fileBasenameNoExtension} · ${profile} · ${dialect} · ${config:키} 등 VS Code와 같은 이름을 스크립트와 경로 설정에서 씁니다.
SPOOL ${workspaceFolder}/out/${fileBasenameNoExtension}.log
SELECT '${profile}' AS who FROM dual;
SPOOL OFF

자주 쓰는 SQL*Plus식 명령

CONNECT 대상 · SET DEFINE OFF · SHOW ERRORS · DESC 이름 · @파일 인자… · @@파일(호출한 스크립트 폴더 기준) · SPOOL 파일 [APPEND] / SPOOL OFF · WHENEVER SQLERROR EXIT. psql · sqlite3 · sqlcmd 사용자를 위해 \d · \dt · .tables · \i · :r · \c 같은 별칭도 대응됩니다. 글 한 줄 출력은 PROMPT를 씁니다. SQL Server 밖에서 PRINT '글'을 쓰면 안내 한 줄을 보여 주고 다음 문장으로 넘어갑니다.

데이터 내보내기

화면에서 복사

결과 그리드 우클릭 메뉴에서 머리글과 함께 복사 · CSV · 텍스트 · Markdown · JSON · SQL(SELECT/INSERT/UPDATE/DELETE/MERGE) 로 복사합니다. SQL 형식은 PK → 첫 유니크 인덱스 → 앞 3개 열 순서로 키를 고르고, 앞 3개 열로 떨어지면 경고 주석을 붙입니다.

주의 “앞 3개 열” 경고가 보이면 실행 전에 WHERE/ON 절을 직접 확인하세요. 열 3개가 행을 유일하게 고르지 못하면 의도보다 많은 행이 바뀝니다.

파일로 내보내기

결과 그리드의 파일로 내보내기(Excel · CSV · TSV · JSON · JSON Lines · SQL INSERT · Parquet)로 저장합니다. 기본 파일 이름은 report_<시각>.xlsx이고(export.format · export.name_pattern), 재조회할지 화면 결과를 쓸지는 export.source로 고릅니다. 명령줄은 nsql export입니다.

nsql export -c prod -t EMP -f csv -o emp.csv
nsql export -c prod -q "SELECT * FROM emp WHERE deptno=10" -f json -o dept10.json
nsql export -c prod -t EMP -f insert:EMP_BACKUP -o seed.sql
nsql export -c pg1 -t big_table -f csv --fast -o big.csv    # PostgreSQL COPY TO 사용

형식: csv(기본) · tsv · json · jsonl · insert[:테이블] · xlsx · parquet(v0.5.0~). 배치로 스트리밍해 쓰므로 결과 전체를 메모리에 올리지 않습니다. --fast는 서버가 직접 csv/tsv를 만들게 하며(PostgreSQL), 지원하지 않으면 안내 뒤 일반 경로로 내보냅니다. nsql run -f csv 질의.sql > out.csv처럼 스크립트 결과를 그대로 파일로 받을 수도 있습니다.

파일에서 넣기 (Import)

CSV · TSV · JSON · JSON Lines · xlsx · Parquet(v0.6.0~)를 표에 INSERT만 합니다(기존 행은 고치지 않음). 인코딩과 구분자는 자동으로 판정하고, 형을 추천받아 새 표를 만들 수도 있습니다.

  • 화면: 실행 ▸ 파일에서 데이터 가져오기… 또는 객체 탐색기에서 표 우클릭 ▸ 데이터 가져오기 → 원천 선택 → 미리보기 · 열 매핑 · 배치 · 커밋 간격 확인 → Start.
  • 명령:
nsql import -c prod -t EMP emp.csv
nsql import -c prod -t EMP -f tsv --map emp_no=EMPNO,name=ENAME --commit-every 5000 emp.tsv
nsql import -c prod -t SALES --create -f xlsx --sheet 2024 --dry-run sales.xlsx   # 새 표 · 시험 실행

auto 경로는 DBMS의 빠른 길을 고릅니다: Oracle OCI 배열 DML · PostgreSQL COPY … FROM STDIN · SQL Server TDS 벌크 적재 · MySQL LOAD DATA LOCAL INFILE. 빠른 길이 없으면(Oracle Thin · SQLite 등) 다중 행 INSERT를 씁니다. 배치가 실패하면 한 행씩 다시 넣어 파일의 몇 번째 행 · 줄에서 무슨 오류가 났는지 알려 주고, 그 앞까지 커밋된 행 수를 보고합니다. 전부-아니면-무로 하려면 커밋 간격을 0으로 두세요.

Import 창

CLI nsql

nsql은 GUI와 같은 엔진 · 같은 프로필 · 같은 설정 파일을 쓰는 명령줄 도구입니다. 결과 데이터는 stdout, 접속 알림 · 진행 · 경고는 stderr로 나가므로 > 파일로 데이터만 받을 수 있습니다.

명령 목록

명령하는 일
run스크립트(파일 또는 - = 표준 입력)를 실행하고 결과 출력
shell대화형 셸(sqlplus/psql식 · 세션 동안 변수 유지)
export질의나 테이블 전체를 파일로
importcsv/tsv/json/jsonl/xlsx/parquet을 표에 대량 적재
format내장 포맷터로 SQL 정리
explain실행 계획과 자동 검토(--analyze = 실제 실행 · --raw = DBMS 원문)
plan접속 없이 스크립트 분석(문장 분리 · 변수 · 방언별 재작성)
conn연결 프로필 관리
cat카탈로그 — 스키마 · 객체 · 컬럼 · 소스 · 컴파일 오류 · DDL 생성
config설정 보기 · 바꾸기(GUI와 공유) · export / import로 내보내기 · 가져오기
grep파일 내용 검색(GUI 파일 검색과 같은 엔진)
bookmark북마크(GUI와 같은 워크스페이스 파일)
license라이선스 상태 · 요청 코드 · 설치
driver드라이버 패키지 검색 · 설치 · 갱신 · 삭제
ext확장 저장소 도구(check · pack · verify · list)

nsql --help, nsql <명령> --help가 인자 · 옵션 · 예제의 최종 기준입니다. nsql --help 첫 줄에 버전과 판(lite/full)이 나옵니다.

예제

# 서버 없이 바로 해 보기
echo "SELECT 'hello' AS a, 1+1 AS n;" | nsql run -c "sqlite::memory:" -

# 스크립트 실행 · 출력 형식
nsql run -c prod report.sql
nsql run -c prod -f markdown query.sql > result.md
nsql run -c prod --max-rows 1000 --timing big.sql
nsql run -c prod -v deptno=10 report.sql          # 실행 전에 치환 변수 정의(&deptno)

# 대화형 셸
nsql shell -c prod

# 카탈로그
nsql cat -c prod tables
nsql cat -c prod -s HR columns EMPLOYEES
nsql cat -c prod source packages PKG_ORDER
nsql cat -c prod gen merge EMPLOYEES

# 접속 없이 방언별 재작성 보기
nsql plan -d mssql session-vars.sql

# 설정
nsql config set ui.lang ko
nsql config get grid.max_rows

대화형 셸

터미널에서 nsql shell을 띄우면 자체 줄 편집기가 켜집니다.

동작키
커서 이동← → · Home / End · Ctrl+A / Ctrl+E
단어 이동Alt+B / Alt+F · Ctrl+←→ · Alt+←→
지우기Ctrl+U · Ctrl+K · Ctrl+W · Alt+D · Alt+Backspace
되돌리기 · 다시 · 붙이기Ctrl+Z · Ctrl+Y · Alt+Y
기록↑ ↓ · Ctrl+R(거꾸로 찾기)
완성Tab — GUI와 같은 문맥 엔진(키워드 · 표 · 컬럼)
여러 줄Alt+Enter로 줄 바꿈 · 기록은 문장 단위
  • 기록은 설정 폴더의 shell_history에 평문으로 저장됩니다(cli.history_max · 기본 500 · 0 = 끔). 접속 문자열에 적은 비밀번호도 그대로 남을 수 있습니다.
  • SHOW VERSION · SHOW AUTOCOMMIT, 셸 show(설정 표)를 지원합니다. 셸은 session.autocommit을 따르고, nsql run은 수동 커밋 + 끝날 때 커밋입니다.
  • nsql*n> 프롬프트의 n은 대기 중인 트랜잭션 수입니다. autocommit=을 프로필과 접속 문자열에 쓸 수 있고, 표준 입력이 터미널이 아니면 대화형으로 묻지 않습니다.

비밀번호 전달 방법

찾는 순서는 -p → 환경 변수 NSQL_PASSWORD → (터미널이면) 숨김 입력입니다. --no-prompt면 묻지 않고 실패합니다(CI용). 명령줄 · 셸 기록에 남기지 않으려면 --password-stdin으로 표준 입력 첫 줄에서 읽습니다.

echo "$PW" | nsql run --password-stdin -c "oracle://scott@dbhost:1521/ORCL" script.sql
NSQL_PASSWORD='s3cr3t' nsql run -c "postgres://app@dbhost:5432/appdb" --no-prompt migrate.sql

출력 형식과 종료 코드

  • -f: grid(기본) · markdown · csv · tsv · json · jsonl · sql:select|insert|update|delete|merge · insert:<테이블>.
  • 표 모양: --width <n|auto> · --max-col-width <n> · --overflow none|wrap|truncate|expanded · -x(레코드 보기). 셸 안에서는 set format markdown · \x · copy markdown(직전 결과를 클립보드로).
  • 영구 기본값은 nsql config set cli.format markdown처럼 설정합니다. 우선순위는 셸 set > 명령줄 플래그 > cli.* 설정입니다.
  • 종료 코드: 0 = 전부 성공 · 1 = 하나 이상 실패(실패마다 stderr에 줄 번호) · 2 = 사용법 · 접속 오류.
  • CLI는 기본으로 글로벌 변수를 쓰지 않습니다(배치가 화면의 값에 영향받지 않게). 이어 쓰려면 nsql config set vars.cli_global on.

확장 (Sublime 패키지)

Nexa SQL의 확장은 Sublime Text의 Package Control과 비슷한 방식입니다. 저장소(폴더 또는 URL)의 index.json에서 패키지 목록을 읽고, 패키지마다 extension.json이 파일과 SHA-256을 밝혀 검증한 뒤 설치합니다.

확장 관리자 켜기

확장 관리자는 기본으로 꺼져 있습니다(extensions.enabled). 명령 팔레트(Ctrl+Shift+P)에서 Extension Manager: Enable Extension Manager를 실행하면 켜지고, 그다음 Install Extension · Remove · List · Enable/Disable · Add Repository 명령을 씁니다. 저장소는 관리자 명령을 실행할 때만 읽고 자동으로 조회하지 않습니다.

공식 저장소의 확장 (v0.6.0 기준)

확장버전내용
Rainbow Pairs1.1.2괄호 · 따옴표 짝을 깊이별 색으로 · 짝/형제/부모/자식으로 이동
SQL Formatter for kiros331.3.5탭 정렬 AS · 연산자, WHERE 1=1, 집합 연산자 구분선 스타일 포맷터
Project Explorer Menus0.2.0열린 파일과 프로젝트 탐색기 행의 우클릭 메뉴(열기 · 위치 보기 · 경로 복사)
Insert Sequence0.1.1다중 캐럿 순번 넣기의 WASM 판 — 설치하면 내장 기능을 대신함
Uppercase Selection0.1.0상태 있는 확장 예제(ABI 1.3) — 편집기 읽기/쓰기 API로 선택 영역을 대문자로
Hello Extension0.3.0SDK 예제 — 로그 한 줄을 쓰는 명령
  • 코드 확장은 WASM으로 동작하며 연료 · 메모리 · 시간 상한 안에서 실행됩니다. 설치 · 삭제에 앱 재시작이 필요 없습니다.
  • 문법 · 테마 · 스니펫 · 키맵 같은 데이터 패키지는 <설정 폴더>/Packages/<패키지>/에 배치됩니다. 사용자 구문 정의는 <설정 폴더>/Packages/<패키지>/<이름>.nexa-syntax 형식으로 두면 내장 구문을 덮어씁니다.
  • 기본 저장소는 https://raw.githubusercontent.com/SosomLab/nexa-sql/main/extensions이며, 같은 구조의 폴더나 URL을 Add Repository로 더할 수 있습니다. 확장을 만들려면 저장소의 extensions/sdk/(Rust → wasm32-unknown-unknown)를 참고하세요.

참고 v0.6.0의 구문 파일 형식은 자체 .nexa-syntax입니다. 패키지 폴더 배치 방식과 키맵 파일(.sublime-keymap)은 Sublime을 따르지만 .sublime-syntax를 그대로 읽지는 않습니다. 확장 저장소를 만들 때는 nsql ext check · pack · verify로 검사합니다.

단축키

Windows · Linux의 Ctrl은 macOS에서 ⌘입니다. 아래 표에서 macOS 열이 다른 것만 따로 적었습니다(⌃ = Control, ⌥ = Option). 모든 단축키는 설정 key.<명령 id> 또는 단축키 캡처 창에서 바꿀 수 있고, key.preset(auto · windows · macos · linux)으로 기본 세트를 고릅니다.

파일 · 탭 · 보기

동작Windows · LinuxmacOS
명령 팔레트Ctrl+Shift+P⌘⇧P
Goto Anything(파일 · 명령 · 심볼)Ctrl+P⌘P
새 탭Ctrl+N / Ctrl+T⌘N / ⌘T
열기 · 저장 · 다른 이름으로 저장Ctrl+O · Ctrl+S · Ctrl+Shift+S⌘O · ⌘S · ⌘⇧S
탭 닫기Ctrl+W⌘W
다음 · 이전 탭Ctrl+Tab · Ctrl+Shift+Tab (Ctrl+PgDn/PgUp)⌃Tab · ⌃⇧Tab (⌘⌥→/←)
환경 설정Ctrl+,⌘,
접속 창Ctrl+Shift+N⌘⇧N
객체 탐색기Ctrl+Shift+E⌘⇧E
파일 검색 패널Ctrl+Shift+F⌘⇧F
북마크 패널Ctrl+Shift+B⌘⇧B
Output 탭Ctrl+Shift+O⌘⇧O
로그 창F10F10
객체 찾기Ctrl+Alt+F⌘⌥O
확장 패널Ctrl+Shift+X⌘⇧X
테마 · 화면 언어 전환Ctrl+Alt+T · Ctrl+Alt+L⌘⌥T · ⌘⌥L
글꼴 크게 · 작게Ctrl+= · Ctrl+-⌘= · ⌘-

실행 · 결과

동작Windows · LinuxmacOS
문장 실행Ctrl+Enter⌘↩
새 결과 탭에 실행Ctrl+\⌘\
전체 실행F5F5
커밋 · 롤백Ctrl+Alt+C · Ctrl+Alt+R⌘⌥C · ⌘⌥R
실행 계획Ctrl+Alt+X⌘⌥X
값 보기 창Shift+EnterShift+↩
날짜 · 시각 셀: 지금 · 현재 시각Ctrl+; · Ctrl+Shift+;⌘; · ⌘⇧;
결과 탭 닫기Ctrl+Shift+W⌘⇧W
다음 · 이전 결과 탭Ctrl+Alt+→ · Ctrl+Alt+←⌃⌥→ · ⌃⌥←
객체 탐색기에서 보기F4F4
객체 정보를 탭으로Shift+F4Shift+F4
객체 탐색기: 선택 항목 메뉴Shift+F10Shift+F10

편집

동작Windows · LinuxmacOS
다음 같은 낱말 추가 · 건너뛰기Ctrl+D · Ctrl+K, Ctrl+D⌘D · ⌘K, ⌘D
같은 낱말 전부 선택Alt+F3⌃⌘G
선택을 줄마다 커서로Ctrl+Shift+L⌘⇧L
위 · 아래 줄에 커서 추가Ctrl+Alt+↑/↓⌃⇧↑/↓
줄 선택 · 복제 · 삭제 · 합치기Ctrl+L · Ctrl+Shift+D · Ctrl+Shift+K · Ctrl+J⌘L · ⌘⇧D · ⌃⇧K · ⌘J
줄 위 · 아래로 옮기기Ctrl+Shift+↑/↓⌃⌘↑/↓
줄 주석 · 블록 주석Ctrl+/ · Ctrl+Shift+/⌘/ · ⌘⌥/
들여쓰기 · 내어쓰기Ctrl+] · Ctrl+[ / Shift+Tab⌘] · ⌘[
대문자 · 소문자Ctrl+K, Ctrl+U · Ctrl+K, Ctrl+L⌘K, ⌘U · ⌘K, ⌘L
SQL 포맷Shift+Alt+F⇧⌥F
Insert SequenceCtrl+Alt+N⌘⌥N
코드 완성Ctrl+Space⌃Space
인텔리센스 캐시 새로 고침Ctrl+Shift+R⌘⇧R
심볼로 이동 · 줄로 이동Ctrl+R · Ctrl+G⌘R · ⌃G
짝 괄호로 · 괄호 안 선택Ctrl+M · Ctrl+Shift+M⌃M · ⌃⇧M
되돌리기 · 다시 하기Ctrl+Z · Ctrl+Y / Ctrl+Shift+Z⌘Z · ⌘⇧Z
선택 되돌리기 · 다시 하기Ctrl+U · Ctrl+Shift+U⌘U · ⌘⇧U

찾기 · 북마크

동작Windows · LinuxmacOS
찾기 · 바꾸기Ctrl+F · Ctrl+H⌘F · ⌘⌥F
다음 · 이전 찾기F3 · Shift+F3⌘G · ⌘⇧G
대소문자 · 낱말 · 정규식 토글Alt+C · Alt+W · Alt+R⌥C · ⌥W · ⌥R
모두 찾기 · 모두 바꾸기Alt+Enter · Ctrl+Alt+Enter⌥↩ · ⌘⌥↩
북마크 토글Ctrl+F2 (Ctrl+K, Ctrl+K)⌘F2 (⌘K, ⌘K)
다음 · 이전 북마크F2 · Shift+F2F2 · Shift+F2
번호 북마크 지정 · 이동Ctrl+Shift+0~9 · Ctrl+0~9⌘⇧0~9 · ⌘0~9

참고 결과 그리드에 포커스가 있을 때는 F2 = 셀 편집, Ctrl+D = 행 복제로 동작합니다.

사용자 키맵 파일

단축키 창(보기 ▸ 단축키) 외에 Sublime 형식의 키맵 파일을 쓸 수 있습니다. <설정 폴더>/Packages/User/Default.sublime-keymap과 OS별 Default (Windows).sublime-keymap · Default (OSX).sublime-keymap · Default (Linux).sublime-keymap을 읽으며, 2단 코드와 조건(context)을 지원합니다.

[
  { "keys": ["ctrl+k", "ctrl+9"], "command": "file.new",
    "context": [ { "key": "selection_empty" } ] }
]

파일 바인딩은 단축키 창에 “(파일)” 로 표시되며, 창의 지정보다 파일이 우선합니다. v0.5.0부터 selector(source.sql string 같은 구문 스코프) 조건도 씁니다. 기본 단축키가 없는 view.minimap 같은 명령도 단축키 창에서 지정할 수 있습니다.

설정과 데이터 저장 위치

사용자 설정 폴더

OS경로
Windows%APPDATA%\nexa-sql
macOS~/Library/Application Support/nexa-sql
Linux~/.config/nexa-sql

환경 변수 NSQL_HOME을 지정하면 그 폴더를 대신 씁니다(시험 · 격리용). 폴더 경로는 nsql config path · nsql conn path로 확인합니다.

항목위치내용
설정settings.confGUI 환경 설정 창과 nsql config가 같은 파일을 봅니다
연결 프로필profiles/프로필 1개 = 파일 1개 · 비밀번호만 암호화
기기 키device.key비밀번호 암호화 키의 재료(Windows는 DPAPI 보호 · 그 밖은 0600)
글로벌 변수vars/global.sqlGLOBAL 층 변수(디스크에 보존)
라이선스license/설치한 라이선스 파일
데모 DBdemo.sqliteDemo 프로필의 SQLite 파일
확장extensions/ · Packages/설치한 확장과 배치된 패키지 파일
드라이버drivers/내려받은 드라이버 패키지(<id>/<버전>/)
객체 DDL 백업backups/objects/객체를 바꾸거나 지우기 전의 DDL
셸 기록shell_historynsql shell에 입력한 문장(평문)
SSH 터널 원장run/ssh-tunnels.pids비정상 종료 뒤 남은 ssh를 정리하기 위한 프로세스 번호
지운 프로필profiles/.deleted/복구용으로 보관하는 프로필(비밀번호 없음 · 기본 30일)
  • 폴더 모드의 상태(북마크 등)는 그 폴더의 .nsql/, 프로젝트 모드의 상태는 .nsql-project 파일에 저장됩니다.
  • 설정 창(Ctrl+,)은 검색 + 분류 트리로 되어 있고, 바꾸는 즉시 저장 · 적용됩니다. 카드의 키 이름 복사 버튼으로 키를 복사해 nsql config get/set에 그대로 쓸 수 있습니다. 자주 바꾸지 않는 설정은 고급 스위치를 켜야 보입니다.
  • 설정은 nsql config export · nsql config import로 옮길 수 있습니다.

개인정보와 네트워크

  • Nexa SQL은 사용 통계나 원격 측정을 보내지 않고, 질의문 · 결과 데이터를 회사로 보내지 않습니다. 라이선스도 오프라인 파일로 확인합니다.
  • DB 서버: 사용자가 지정한 서버에 접속합니다. SSH 터널을 쓰면 지정한 SSH 서버에도 시스템 ssh로 접속합니다.
  • 드라이버 다운로드(v0.2.8~): 필요한 드라이버가 없을 때 GitHub(raw.githubusercontent.com · github.com과 그 다운로드 호스트)에서 색인과 패키지를 받습니다. 기동할 때 하루 한 번 드라이버 색인도 읽고, 접속 때 새 판이 있으면 먼저 설치합니다. 모두 GET 요청이며, 끄려면 driver.auto_install · driver.auto_upgrade · driver.check_updates를 끄세요.
  • 확장 관리자: 켜 둔 상태에서 관리자 명령을 실행할 때만 확장 저장소(기본 GitHub)를 읽습니다.
  • GitHub 같은 호스팅 사업자는 일반 웹 요청처럼 IP 주소와 요청 시각을 알 수 있습니다.

DBMS별 지원 수준

DBMSv0.6.0 상태드라이버 · 비고
Oracle지원Thin(기본 · 12c 이상 · Instant Client 불필요) · OCI(설치본 내장 · Instant Client 필요 · 11g 가능) · TNS 별칭 · AS SYSDBA · REF CURSOR · DBMS_OUTPUT · 패키지 오버로드 · 컴파일 오류 표시
SQL Server지원순수 Rust(TDS) · 다중 배치 변수 공유 · PRINT/RAISERROR 실시간 · SSMS식 탐색기 · 3부 이름 완성 · TDS 벌크 적재
PostgreSQL지원순수 Rust · RAISE NOTICE 실시간 · refcursor · COPY 적재/내보내기 · TLS 지원(v0.4.0~)
MySQL · MariaDB지원순수 Rust · LOAD DATA LOCAL INFILE 적재 · TLS
SQLite지원파일 하나 = 서버 하나로 탐색기에 표시 · 확장 모듈 로드 꺼짐
DuckDB지원파일 · 메모리 DB · 패키지가 가장 큼(Windows 약 19.6 MB)
IBM Db2 (LUW)지원네이티브 DRDA · 12.1에서 검증 · 서버 커서 · LOB · CALL 결과 집합/OUT · 취소 · 암호화 로그인 · EXPLAIN 트리 · 10.5 페이징 폴백(10.5 실서버는 미검증)
ClickHouse지원HTTP(8123) · HTTPS(8443) · 서버 측 매개변수 · 트랜잭션 없음 · 그리드 편집 미지원
Redshift · CockroachDB · YugabyteDB · Greenplum · TimescaleDB프리셋PostgreSQL 드라이버로 접속
Tibero · Altibase · CUBRID · SAP HANA · Informix프리셋ODBC 경유 · 벤더 드라이버 필요 · REF CURSOR 미지원
MS Access실험ODBC 경유

문제 해결

Oracle에 접속하면 DPI-1047 오류가 나요

Instant Client를 찾지 못한 것입니다. OCI 드라이버를 쓸 때만 나는 오류이므로, Oracle 12c 이상이면 Thin으로 바꾸면 Instant Client 없이 접속됩니다(oracle.driver = thin · ?driver=thin). OCI가 필요하면 Instant Client(Basic)를 설치한 뒤 설정 ▸ DBMS ▸ Oracle에서 폴더를 직접 지정하거나 NSQL_ORACLE_CLIENT_DIR 환경 변수를 설정하고 앱을 다시 시작하세요. 클라이언트 라이브러리는 실행마다 첫 Oracle 접속 때 한 번 로드됩니다.

TNS 별칭으로 접속하면 ORA-12154가 나요

TNS_ADMIN 폴더에 tnsnames.ora가 있는지 설정 ▸ DBMS ▸ Oracle의 읽기 전용 항목에서 확인하세요. host:port/service 형식 접속은 tnsnames.ora 없이도 됩니다.

PostgreSQL 서버에 접속이 거부돼요

서버의 pg_hba.conf와 TLS 설정을 확인하세요. v0.4.0부터 PostgreSQL TLS를 지원하며, 기본 preferred는 TLS를 먼저 시도합니다. 인증서 검증을 요구하면 pg.tls · pg.tls_ca를 확인하세요. ~/.pgpass · pg_service.conf는 읽지 않으니 비밀번호는 프로필이나 입력 창으로 주세요.

다른 PC나 다른 Windows 계정으로 옮긴 프로필이 안 열려요

“비밀번호 봉투를 열 수 없습니다”는 다른 계정 · 다른 PC의 기기 키로 암호화된 프로필이라는 뜻입니다(Windows DPAPI는 같은 계정에서만 풀림). 그 계정에서 nsql conn add <이름> …으로 다시 저장하세요.

'R&D' 같은 문자열에 입력 창이 떠요

Oracle 탭에서는 SQL*Plus처럼 &를 치환 변수로 봅니다. 스크립트 앞에 SET DEFINE OFF를 쓰거나 설정 script.define을 off로 바꾸세요. 다른 DBMS 탭에서는 v0.1.9부터 정의하지 않은 &x는 그대로 보냅니다.

결과가 200행에서 멈춰요

기본 가져오기 단위가 200행입니다(grid.max_rows). 스크롤을 끝까지 내리면 더 읽고, 전체 조회로 끝까지 가져옵니다. CLI는 --max-rows N으로 올리며, 잘렸을 때는 “more rows available”이라고 명시합니다. 200행 뒤마다 “처음부터 다시 받을까요?”가 뜨면 드라이버가 낡은 것입니다. 드라이버 관리자나 nsql driver update로 drivers-v0.1.7 이상으로 갱신하세요.

VPN이 끊긴 뒤 실행이 계속 실패해요

v0.1.8부터 탭 전용(CONNECT) 세션도 네트워크가 돌아오면 자동으로 다시 접속합니다. 이전 버전을 쓰고 있다면 최신 버전으로 올리세요. 토스트를 눌러 바로 다시 접속할 수도 있습니다. 멈춘 호출이 풀리지 않으면 session.call_timeout_secs도 확인하세요.

macOS에서 “확인되지 않은 개발자” 경고가 떠요

서명 · 공증 전 빌드라서 그렇습니다. Homebrew Cask로 설치하거나, xattr -dr com.apple.quarantine "/Applications/Nexa SQL.app"으로 격리 표식을 떼어 내세요.

SQLite 경로를 못 열어요

Windows에서는 Windows 경로를 그대로 쓰세요(sqlite:C:\data\app.db). Git Bash의 /c/... 꼴은 Windows 실행 파일이 읽지 못합니다.

한국어로 바꾸고 싶어요

Ctrl+Alt+L(macOS ⌘⌥L)로 바꾸거나 nsql config set ui.lang ko를 실행하세요. 설정은 GUI와 CLI에 함께 적용됩니다.

드라이버를 내려받지 못해요

접속할 때 드라이버 설치가 실패하면 네트워크나 프록시를 확인하세요(HTTPS_PROXY). 인터넷이 없는 환경이면 다른 PC에서 릴리스의 drivers-v* 항목에 있는 nsql-drivers-all-<버전>-<os>-<arch>.zip을 받아 nsql driver install --file <파일>로 설치합니다. 내려받은 파일은 SHA-256과 서명을 통과해야 설치됩니다.

데모 만들기가 실패해요

데모 DB에는 SQLite 드라이버가 필요한데, 설치본에는 들어 있지 않습니다. 드라이버 관리자나 nsql driver install sqlite로 먼저 설치한 뒤 다시 만드세요. sqlite::memory:로 접속하면 드라이버가 자동으로 설치됩니다.

SSH 터널 접속이 실패해요

터미널에서 ssh user@host가 비밀번호 없이 되는지 먼저 확인하세요. 터널은 키 인증만 쓰고 묻지 않습니다. ssh가 PATH에 없으면 ssh.command에 전체 경로를 적습니다.

버전 변경 이력

버전 흐름 요약 — 2026-09-28 v0.1.0 첫 공개(설치본 5종 + Homebrew) → v0.1.2 SQL 포맷터 · Ctrl 객체 링크 · 그리드 필터 → v0.1.3 Output 탭 · SSMS식 SQL Server 탐색기 · 서버 유형 → v0.1.4 DBMS 아이콘 · 화면 언어 “시스템” → v0.1.5 Linux 저장소 · Chocolatey · winget 채널 개시 → v0.1.6 Goto Anything · 조건 바 · 엑셀식 값 필터 → v0.1.7 점진 결과 표시 · 데이터 타입 완성 · CREATE 문 비교 → v0.1.8 전용 세션 자동 재접속 → v0.1.9 macOS 네트워크 · 폴더 감시와 DBMS별 & 치환 규칙 → v0.2.0 Instant Client 없는 Oracle Thin → v0.2.2 객체 찾기 · 운영 보류 커밋 → v0.2.6 오타 의심 자리 · Ctrl+클릭 캐럿 → v0.2.8 드라이버 분리 · MySQL/MariaDB · DuckDB · ODBC → v0.2.9 실행 계획 검토 → v0.3.0 IBM Db2 · ClickHouse · 아웃라인 재설계 → v0.3.1 확장 드라이버 서버 커서 → v0.4.0 SSH 터널 · PostgreSQL TLS · 키맵 파일 · nsql 셸 줄 편집기 → v0.5.0 포맷 프리셋 · xlsx/parquet 내보내기 · 드라이버 자동 갱신 · 프로젝트 설정 → v0.6.0 xlsx/parquet 가져오기 · 읽기 전용 프로필 · 구문 색 프리셋 · Oracle 라이브 모니터 → v0.7.0 버퍼 비교 · 로컬 히스토리 · 오브젝트 소스 시점 · 선언 차이 비교 · 안전한 그리드 편집 · 창 투명도.

v0.7.0 — 2026-11-07

추가

  • 비교 · 로컬 히스토리: 편집기 두 버퍼 비교(edit.compare_with) · F7 / Shift+F7 차이 이동 · 편집기 거터의 git 변경 띠(editor.git_gutter · Alt+F7) · 저장한 파일의 로컬 히스토리(edit.history · 앱 데이터 폴더 history/).
  • 오브젝트 소스 시점: 소스 탭을 열 때와 컴파일(F5) 직전마다 시점을 남기고, **로컬 히스토리에서 복원…**으로 편집기 탭에 되돌립니다(실행 전에는 서버에 보내지 않음).
  • 실제 객체와 비교에 선언 차이: 테이블 열(추가 · 삭제 · 타입/NULL · 순서)과 프로시저/함수 인자 · 반환 타입 차이를 비교 머리 줄과 Output 탭에 요약합니다.
  • 창 투명도(window.transparency · window.transparency_blur · Windows · macOS · X11).

개선

  • 더 안전한 그리드 편집: UNIQUE 키는 열이 모두 NOT NULL일 때만 행 식별에 쓰고, 적용 전에 키 값 중복을 서버에서 한 번에 확인합니다(grid.edit_key_check) · 행 식별 방식 머리 배지(KEY · RID · ALL).
  • 방언 수정: PostgreSQL · DuckDB · ClickHouse SHOW 통과 · 필수 인자 수로 오버로드 선택 · PostgreSQL SET search_path / SET SCHEMA 세션 반영 · MySQL 8.0.19+ MERGE 행 별칭.
  • 드라이버 drivers-v0.1.11: SQL Server geography · geometry · hierarchyid · sql_variant 열 읽기 · Db2 zoned NUMERIC · 로케이터 디코드.

수정

  • 가져오기 오류에서 Skip/Stop을 고르면 커밋 안 된 앞 배치가 누락되던 문제 · nsql import --create가 아무것도 못 가져오면 만든 표를 지움 · ClickHouse 결과 그리드 읽기 전용.

동작이 바뀌는 기본값(각각 설정에서 끌 수 있음)

  • 창 투명도 기본 켜짐(포커스 5% · 비활성 10%) — 둘 다 0이면 종전처럼 불투명.
  • grid.refetch_confirm 기본 off — 결과 다시 받기가 묻지 않고 진행(행이 교체되면 경고 토스트 1회).
  • history.enabled 기본 켬(항목당 50개 · 전체 200MB) · grid.edit_key_check 기본 켬(키 확인 조회 1회 추가).

v0.6.0 — 2026-11-05

추가

  • 데이터 가져오기: csv/tsv(인코딩 · 구분자 자동 판정) · json/jsonl · xlsx · parquet. 미리보기 · 열 매핑 · 형 추천으로 새 표 만들기. nsql import에 -f json|xlsx|parquet · --sheet · --delim · --encoding · --create/--types · --skip · --on-error · --dry-run · --trim · --null-text.
  • 접속 프로필: 지운 프로필 복구(nsql conn deleted|restore) · 읽기 전용 프로필 · 비밀번호 없는 내보내기/가져오기.
  • Oracle 라이브 모니터(oracle.live.pipe · oracle.live.longops · nsql run --live) · 실행 로그 세션별 필터.
  • 저장 창 줄 끝 선택 · 서식 있는 잘라내기(editor.cut_rich) · 완성 열의 키 표시(PK/FK/UQ) · nsql ext check|pack|verify|list.

변경

  • 내보내기 기본값: 저장 창이 result.csv 대신 report_<시각>.xlsx를 제안합니다(export.format · export.name_pattern). 파일로 내보내기는 형식별 하위 메뉴입니다.
  • 구문 색: 함수 · 자료형 · 바인드 변수 · ; · 명령에 각자 색 · 프리셋 editor.color_preset · 키워드는 접속한 방언을 따름.
  • 프로필 삭제가 30일 보관으로 바뀌었습니다(connect.deleted_keep_days).

개선

  • 방언별 SQL 어휘(중첩 블록 주석 · E'…' · GO n · U&"…" · 예약어 표) · 한 세션만 끊긴 경우의 전용 토스트 · 보류 카드의 [롤백] · [커밋 후 계속] · 2 MB 파일 타이핑 프레임당 약 52 ms → 6 ms.

수정

  • 토스트 버튼 커서 · 파일 창 편집 메뉴 겹침 · 브레드크럼 빈 곳 클릭.

v0.5.0 — 2026-11-03

추가

  • SQL 포매터: river 정렬 · PL/SQL · T-SQL · PL/pgSQL 블록 재들여쓰기 · 포맷 프리셋(format.preset) · nsql fmt --preset.
  • 내보내기: GUI와 nsql export의 스트리밍 내보내기 · 새 형식 xlsx · parquet.
  • 프로젝트 설정 절 · 문법별 들여쓰기 · 열 때 들여쓰기 감지.
  • 키맵: 충돌 덧말 · 단축키 창 검색 · selector context · 툴바 그룹 순서와 숨김.
  • 미니맵 토글 · 자동 숨김 · 배율 · 왼쪽 배치 · 변경 줄 표시. 북마크: 객체 DDL · 메모 · 그룹 간 끌기.

변경

  • driver.auto_upgrade(기본 켬): 접속할 때 캐시된 색인에 새 판이 있으면 먼저 설치합니다. 이제 드라이버 코드가 사용자 조작 없이 갱신될 수 있습니다.
  • project.hot_exit(기본 always): 프로젝트 없이 종료할 때 묻지 않고 미저장 탭을 보관합니다. project.gitignore(기본 켬): Goto 색인이 .gitignore를 따릅니다.

개선

  • 절 위치 인식 자동 완성 · Output 줄 색(⚠ · ✖)과 Ctrl+F · 실행 로그 세션 열 · 상태줄 ⚡ · & 세그먼트 · drivers-v0.1.10.

수정

  • nsql shell 여러 줄 문장: 0.4.0 노트에 적혔지만 0.4.0 바이너리에 빠져 있던 기능을 실제로 넣었습니다.
  • 구문 오류가 “다시 실행” 확인을 띄우던 오탐 · FROM t(DuckDB/ClickHouse) · TABLE t(PostgreSQL) 조회 취급.

v0.4.0 — 2026-10-30

추가

  • SSH 터널: 모든 접속에 ?ssh=user@host[:port](+ ssh_key) 또는 접속 창 SSH 칸 · 시스템 ssh 사용 · 키 인증만.
  • PostgreSQL TLS: sslmode/tls_ca · pg.tls 기본 preferred · 접속 상한 20초 · 접속 오류 원인 사슬.
  • 사용자 키맵 파일(.sublime-keymap): context 키 · 2단 코드 · 단축키 창의 파일 바인딩과 조건 행.
  • nsql shell 줄 편집기: 단어 이동 · 되돌리기/다시/붙이기 · 기록 파일 + Ctrl+R · Tab 완성. SHOW VERSION · SHOW AUTOCOMMIT · --timing=json.
  • Insert Sequence 내장 확장(다중 캐럿 순번) · “머리글과 함께 복사”와 “머리글만 복사”.
  • SQL Server 호출 상한(session.call_timeout_secs): 멈춘 호출은 소켓을 닫고 다음 실행에서 재접속. 확장 드라이버는 drivers-v0.1.9 필요.
  • 확장 ABI 1.3: 상태 있는 확장 · 편집기 읽기/쓰기 API · 사건 배달.

개선

  • 결과 일관성: OFFSET 재질의가 직전 페이지 끝 1행을 겹쳐 받아 서버 결과가 바뀌면 오류로 멈춤(grid.overlap_check).
  • IBM Db2: 서버 커서 · 다중 커서 섹션 풀 · 10.5 페이징 폴백.
  • SQLite · SQL Server의 Execute/Fetch 단계 계측 분리 · 드라이버 관리자 갱신 알림 · 셸은 session.autocommit을 따름.

수정

  • SQL 포맷이 SELECT 목록 안 주석을 잃던 문제 · 뒤에 별칭이 있는데 완성이 별칭을 또 붙이던 문제 · Db2 DDM 확장 길이.

v0.3.1 — 2026-10-27

수정

  • 확장 드라이버에서 200행 뒤 자동 페치가 “처음부터 다시 받을까요?”를 묻거나 조용히 멈추던 문제 — ABI가 커서 핸들을 싣습니다. drivers-v0.1.7로 갱신하면 서버 커서로 이어 받고, 옛 드라이버는 확인 재질의로 동작합니다.

v0.3.0 — 2026-10-26

추가

  • IBM Db2(LUW · 12.1 검증) 네이티브 DRDA 드라이버(IBM 클라이언트 불필요 · LOB · CALL 결과 집합/OUT · 취소 · 암호화 로그인 · EXPLAIN 트리).
  • ClickHouse 드라이버(HTTP · 서버 측 매개변수) · MS Access(ODBC · 실험).
  • 접속 프리셋: Redshift · CockroachDB · YugabyteDB · Greenplum · TimescaleDB(PostgreSQL 드라이버) · SAP HANA · Informix(ODBC).
  • 변수: 입력 창의 타입 · 전달 미리보기 · 접속 프로필 변수(nsql conn var) · hover 값 카드 · DEFINE 이름 SHARE|LOCAL|GLOBAL.
  • 설정 내보내기/가져오기(nsql config export/import).

변경

  • 아웃라인 재설계: 선언 이름 위주 · 문장 토글 · 트리/접기 · 캐럿 추종.
  • 운영 Commit/Run 2단 확인 통일 · Linux · macOS ODBC 확장이 드라이버 관리자를 포함.

개선

  • 바인드 가시성(bind N · declare-prepend · inline N) · Linux 서식 복사 · 시스템 테마 실시간 추종 · 기동과 큰 파일 줄 변경 표시 속도.

수정

  • ODBC 자동 커밋 끔 상태의 커밋 멈춤 · Linux SQL Server ODBC 취소 충돌 · 트랜잭션 로그에 서버 문장만 표시.

v0.2.9 — 2026-10-23

추가

  • 실행 계획 검토: 실행 계획 · 실제 실행 계획 · nsql explain [--analyze] [--raw].
  • 드라이버 관리자 내장 열 · 올라간 드라이버 삭제 · 파일 대화상자 기본 확장자.

수정

  • 설치된 Oracle Thin 확장을 쓰지 않고 OCI로 폴백해 Instant Client를 요구하던 v0.2.8의 문제.
  • nsql explain/import/export/cat이 드라이버 설정 · 자동 설치를 따르도록 수정. CLI 문구가 ui.lang을 따릅니다.

v0.2.8 — 2026-10-23

변경

  • 드라이버 분리 설치본: 설치본에는 Oracle OCI 드라이버만 넣고, 나머지는 첫 접속 때 서명된 패키지를 내려받아 설치합니다(driver.auto_install · 오프라인 번들). 이 판부터 드라이버 다운로드와 하루 1회 갱신 확인을 위한 인터넷 통신이 생겼습니다.

추가

  • MySQL · MariaDB · DuckDB 드라이버 · ODBC 전 OS · 접속 매개변수 ?driver=.
  • 드라이버 관리자(보기 ▸ 드라이버) · nsql driver · 접속 폼의 Oracle Thin/OCI 선택 · 툴바 [변수].

참고 이 버전은 winget · Chocolatey에 올리지 않았습니다.

v0.2.7 — 2026-10-21

변경

  • Linux 글자 기본값을 macOS와 같게(ui.text_hint · ui.text_snap 끔 · ui.text_weight 0 · ui.text_contrast 100). 직접 정한 값은 유지됩니다.

추가

  • Oracle Thin 안내에 “다시 보지 않기”(notice.oracle_thin) · 한정 이름(FROM 스키마.)에도 자동 별칭.

개선

  • 조회 뒤 카드 표시 구간 CPU 2.4~3.0초 → 약 0.45초 · 표 약 570개 Oracle 스키마 미리 읽기 중 CPU 초당 29 → 21 ms.

수정

  • OS별 기본값이 실제로 적용되지 않던 문제 · Linux UI 글꼴의 한자가 중국식 자형으로 그려지던 문제.

v0.2.6 — 2026-10-20

추가

  • 구문 오류의 오타 의심 자리로 캐럿(editor.error_analyze): 예 DISTINC → DISTINCT?. 끝까지 검증한 것은 SQLite입니다.
  • 새 설정 분류 Ctrl 키(ctrl.click · ctrl.right_click · ctrl.shift_click).

변경

  • Ctrl+클릭 = 캐럿 추가/제거, Ctrl+우클릭 = 편집기 메뉴(종전 = 설명 복사 · 링크 메뉴). 설정으로 옛 동작을 고를 수 있고 옛 키 값은 자동으로 옮겨집니다.

v0.2.5 — 2026-10-20

추가

  • 오류 위치로 캐럿 이동(editor.error_goto) · 찾기 규칙 정리(editor.find_auto_scope · Esc 복귀).

개선

  • 열 모드 Home/End가 캐럿마다 자기 줄 안에서 이동 · 스크립트 엔진 메시지가 화면 언어를 따름.

수정

  • 객체 탐색기 “끊김” 헤더가 남던 문제.

v0.2.4 — 2026-10-17

수정

  • macOS 화면 깜빡임 치명 결함: 창 서버가 보여 주는 표면에 다시 그려 빈 프레임이 나오던 문제. macOS 사용자는 업데이트하세요.

v0.2.3 — 2026-10-17

추가 (macOS)

  • Finder · Dock · open -a로 파일 열기.

변경

  • 기본 단축키: 실행 계획 Ctrl+Alt+X(macOS ⌥⌘X) · macOS 객체 찾기 ⌥⌘O. 직접 바꾼 키는 유지됩니다.

수정

  • macOS에서 한글 붙여넣기가 ?로 바뀌던 문제 · Instant Client 19.x의 SET SERVEROUTPUT ON 출력 소실 · SQL Server 밖의 PRINT '글'이 문법 오류로 나가던 문제.

v0.2.2 — 2026-10-16

추가

  • 객체 찾기 창(Ctrl+Alt+F): 연결된 모든 서버의 이름 · 설명 · 컬럼 · 소스 본문 검색 · 미리보기.
  • 운영 보류 커밋 · 객체 백업(backups/objects/).
  • 내장 명령 자동 완성 · 탐색기 노드 끌어 놓기 · 모든 노드에 이름 복사 · 메모리 창 상세 스위치.

수정

  • Windows .sql · .nsql-project 파일 연결 재등록 · AltGr 자판의 Ctrl+Alt+F · 객체 찾기 입력란의 복사 · 붙여넣기.

v0.2.1 — 2026-10-15

추가

  • 객체 탐색기 설명 포함 토글 · 검색 범위(explorer.search_scope · 기본 전체 DBMS). SQL Server도 서버 전체를 찾습니다.

개선

  • 모든 입력란이 한/영 상태를 함께 씁니다 · 서버 유형을 바꾸면 그리드 편집 가능 여부가 바로 반영됩니다.

수정

  • 이름에 “db2”가 든 PostgreSQL 연결의 아이콘 · 필터 상자 툴팁 위치.

v0.2.0 — 2026-10-14

추가

  • Oracle Thin 드라이버(기본 · 순수 Rust · Instant Client 불필요). oracle.driver로 OCI와 전환.
  • Ctrl을 누른 동안 줄 끝 라벨 · 이진 파일 안내 탭 · 값 창의 NULL/빈 문자열/값 · Ctrl+; 지금 넣기 · 열 머리 끌어 놓기 · 설정 창 “변경” 스위치.
  • Linux 네트워크 변경 · 폴더 변경 감시.

개선

  • 명령 팔레트가 영어 이름 · 지역화 이름 · 명령 id로 찾기 · nsql cat의 SQL Server 3부 이름.

수정

  • SQL Server 행 0 결과에 앞 결과가 남던 문제 · 프로젝트 없이 탭을 옮길 때 파일 목록 지연.

v0.1.9 — 2026-10-10

추가

  • 객체 탐색기 우클릭 메뉴에 아이콘 표시(ui.menu_icons).
  • 이름 복사 + Shift = 전체 이름 복사(스키마.객체 · 스키마.패키지.멤버 · SQL Server DB.스키마.객체, 인용은 editor.quote_idents).
  • 패키지 멤버 ▸ Generate SQL ▸ Call = 그 오버로드의 이름 지정 바인드 호출문. 패키지 전체 Call은 오버로드마다 블록을 만듭니다.

변경

  • &이름 치환의 DBMS별 기본값(새 설정 script.define = auto · on · off): Oracle은 SQL*Plus처럼 정의 안 된 이름을 묻고, SQL Server · PostgreSQL · SQLite · MySQL 방언은 DEFINE · :setvar로 정의한 이름만 바꿔 'R&D'에 입력 창이 뜨지 않습니다. CLI도 같은 규칙을 따릅니다.
  • 패키지 메타데이터 · 설치/제거 안내 · 동봉 고지의 기본 글을 영어로 바꿨습니다(한국어는 지역화로 덧붙임).

개선 (macOS)

  • 네트워크 변경 감지: VPN 연결/해제 · Wi-Fi 변경을 알아채고 다음 동작 전에 서버 응답을 먼저 확인합니다(종전 Windows만).
  • 폴더 변경 감시: 앱 밖에서 만들거나 바꾸거나 지운 파일이 프로젝트 탐색기 · Goto Anything 색인에 바로 반영됩니다.
  • 창이 잠시 쉬면 그리기 표면을 줄여 유휴 메모리를 약 40 MB 줄였습니다.

수정

  • 수십만 행 결과의 스크롤바를 끌 때 위치 계산이 넘쳐 앱이 끝나거나 엉뚱한 위치로 가던 문제.
  • Oracle 패키지 오버로드가 두 멤버의 인자를 합쳐 보여 주던 문제 — 멤버마다 #1 · #2와 자기 인자만 표시.
  • PostgreSQL 함수의 Arguments 폴더가 늘 비어 있던 문제 — 이름 없는 인자도 $1 · $2로 표시.
  • 한글 조합 첫 자음이 선택 영역을 지운 뒤 되돌리기로 복구되지 않던 문제.

v0.1.8 — 2026-10-09

수정

  • 탭 전용(CONNECT) 세션이 네트워크 복구 뒤 자동으로 다시 접속하지 않아 매번 DPI-1010: not connected가 나던 문제. 재접속 대상은 비밀번호 없이 기억하고, 비밀번호는 메모리 안 암호화 보관소에서 꺼내 씁니다.
  • 재접속할 정보가 없을 때 복구된 것처럼 보이던 표시를 “끊김”으로 바로잡았습니다.

v0.1.7 — 2026-10-09

추가

  • 점진 결과 표시(기본): 행 상한 0이면 첫 묶음이 바로 보이고 나머지는 도착하는 대로 이어 붙습니다. 중지 · 진행 · 메모리 예산이 묶음 단위로 적용됩니다(설정 그룹 Result Fetch).
  • 자연 정렬(ui.sort_natural): 결과 그리드 · 탐색기 · 북마크 등에서 ITEM2 < ITEM10.
  • CREATE 문 ↔ 서버 객체 비교: 나란히 보기 diff 뷰어(추가 · 삭제 · 변경 줄 배경, 동기 스크롤, 다음/이전 변경).
  • 데이터 타입 완성: CAST(x AS, DECLARE @x, PL/SQL 선언, 컬럼 정의 등에서 방언별 내장 타입과 서버의 사용자 정의 타입. 현재 스키마의 함수 · 패키지를 접두 없이 제안, COLLATE 이름, 이름 지정 인자.

개선

  • 서버 상태 전파: 네트워크가 끊기면 같은 서버의 세션 · 탐색기를 모두 끊김으로 표시하고, 서버가 응답하면 자동 복구(Windows).
  • 서버가 취소에 응하지 않으면 ■를 한 번 더 눌러 강제 중지.
  • 클릭은 버튼을 놓을 때 동작, 편집기 · 결과 영역 최소 높이 설정, 우클릭 메뉴 배타 설정.

수정

  • 행 상한 0으로 중지한 뒤 같은 질의를 다시 돌리면 200행만 오던 문제.
  • 32 KB가 넘는 CLOB 편집이 Oracle · PostgreSQL · SQL Server에서 올바로 커밋되지 않던 문제.
  • SQL Server ALTER TABLE의 데이터 타입 팝업이 “불러오는 중”에 머물던 문제.

v0.1.6 — 2026-10-08

추가

  • Goto Anything(Ctrl+P): 파일 퍼지 검색 · 이름:줄 · > 명령 · : 줄 · @ 심볼 · % 본문 · ? 도움말. 큰 폴더 열거 45초 → 0.3초, 제외 폴더 project.exclude.
  • 조건 바: 그리드 아래에 조건을 쓰고 Enter로 재조회, 열 머리 끌어 놓기, 셀 우클릭 ▸ 조건.
  • 엑셀식 값 필터(모두 선택 · 검색 · 다중 선택) · 필터 칩 · OR 모드 · 서버 재조회. 열 머리 타입 배지와 데이터 타입 카드.
  • 글꼴 크기 Ctrl+= / Ctrl+- / Ctrl+휠, 메뉴의 단축키 표시, 탭 이동 기록(MRU).
  • 객체 링크 카드의 동작 버튼, FK 기반 JOIN 조건 스니펫, 시그니처 카드, SQL Server 3부 이름.
  • 변수: VAR x DROP [GLOBAL] · VAR CLEAR [GLOBAL|ALL] · 선언과 층을 한 줄로 · SHOW VARIABLES의 Active 열. CLI 글로벌 변수는 선택(vars.cli_global).
  • 외부에서 파일이 바뀌면 토스트(받아들이기 · 다시 읽기 · 3-way 병합).

개선

  • 메모리 창: 그룹 소계 · 증감 표시 · 힙 정리. 창이 열려 있을 때 유휴 CPU를 크게 줄였습니다.

수정

  • SQL Server 대량 적재: 3부 표 이름 · Decimal 자릿수 불일치로 중단되던 문제.
  • Oracle SELECT INTO 자동 타입 변수, 모르는 확장자 파일을 일반 텍스트로 열기.

v0.1.5 — 2026-10-05

추가

  • 배포 채널 확대: Linux APT/RPM 저장소(pkg.sosomlab.com) 개시, Chocolatey · winget 제출 시작.
  • 객체 동작을 Shift+F10과 명령 팔레트에서 실행, 시그니처 카드, 참조 행 보기, 결과 필터 값 고르기 · 재조회 · OR.

개선

  • 릴리스 노트를 영어 · 한국어로 함께 제공.

v0.1.4 — 2026-10-04

추가

  • DBMS 아이콘 173종(밝은/어두운 테마)을 객체 탐색기 서버 머리글과 연결 행에 표시.
  • 상태바 항목 편집(순서 · 표시), 툴바 · 상태바 우클릭 메뉴와 툴바 설정.
  • 화면 언어 “시스템”(기본값): OS 표시 언어를 따름.

개선

  • SQL 포맷터: EXEC 문, ${이름:형식}, N'…'/q'[…]', :: 캐스트, PL/SQL 블록 뒤 문장. 확장 SQL Formatter for kiros33 1.3.3.

수정

  • ${이름:형식} 실행 시 입력 창이 잘못 뜨던 문제, EXEC 블록 안 특정 줄에서 실행이 끊기던 문제, macOS Retina에서 툴바 표시가 작던 문제.

v0.1.3 — 2026-10-02

추가

  • Output 탭(서버 메시지 · 컴파일 결과 · 오류 · 완료 줄)과 객체 소스 탭의 F5 = 한 단위 실행.
  • 객체 삭제(DDL 백업 후 삭제 · 운영 서버는 백업 실패 시 삭제 안 함), 서버 유형(NON · DEV · TST · PRD).
  • SQL Server SSMS식 탐색기(데이터베이스 층 · 연결된 서버 · 서버 보안 · DB 용량), 툴바 작업 단위(DB/스키마) 전환, 3부 이름 완성.
  • Ctrl 링크 ▸ 객체 탐색기에서 보기, 시스템 객체 링크.

변경

  • 시간 설정을 ms 단위 규칙으로 정리(옛 키는 자동 이전).

v0.1.2 — 2026-09-30

추가

  • SQL 포맷터(Shift+Alt+F · 내장 Basic · 미리보기 탭).
  • Ctrl 객체 링크와 코멘트 툴팁, 그리드 필터와 필터 질의, 고속 스크롤, 객체 용량 표시, 확장 관리.

참고 v0.1.1은 GitHub 릴리스 초안으로만 남아 공개되지 않았습니다. Homebrew는 0.1.0에서 0.1.2로 바로 올라갔습니다.

v0.1.1 — 2026-09-28

변경

  • 기본 화면 언어 = OS 표시 언어(지원하지 않으면 영어).
  • 라이선스 없이도 모든 기능이 동작하도록 기능 제한 기본 끔.

개선

  • 객체 탐색기에서 SQLite 파일 하나를 서버 하나로 표시, 자동 저장 방식 개선, 패널 타입어헤드 한글 지원.

v0.1.0 — 2026-09-28

추가

  • 첫 공개 릴리스. Windows .msi · macOS .pkg/.dmg(Universal) · Linux .deb/.rpm 설치본과 Homebrew Cask 채널.
  • Oracle · SQL Server · PostgreSQL · SQLite 접속, SQL*Plus식 세션 변수 엔진, 결과 그리드, 객체 탐색기, CLI nsql.

알려진 제한

  • SQL Server는 서버 인증서를 검증하지 않습니다(신뢰 처리). Windows 통합 인증 · Kerberos 지원 여부는 확인되지 않았습니다.
  • PostgreSQL 기본 TLS 모드 preferred는 평문으로 떨어질 수 있고, 클라이언트 인증서(sslcert · sslkey)는 지원하지 않습니다.
  • Oracle Thin의 제한 — 실행 중 취소(■는 다음 배치 경계에서 멈춤 · 두 번째 ■ = 강제 중지) · 암묵 결과 집합 · OS 인증 · 네이티브 네트워크 암호화 · 12c 미만 서버 · 배열 DML 적재가 안 됩니다. 필요하면 OCI를 쓰세요(Instant Client 필요).
  • 드라이버는 처음 쓸 때 인터넷으로 받습니다. 폐쇄망에서는 오프라인 번들을 미리 설치해야 합니다.
  • SSH 터널은 키 인증만 됩니다. 시스템 ssh가 필요합니다.
  • ClickHouse는 트랜잭션과 그리드 편집이 없습니다. ODBC는 REF CURSOR를 지원하지 않고, MS Access는 실험 단계입니다.
  • 코드 서명이 없습니다 — Windows SmartScreen · macOS Gatekeeper 경고가 뜹니다.
  • macOS · Linux의 기기 키는 0600 평문 파일입니다(Keychain · Secret Service 연동은 계획 단계). 설정 폴더를 통째로 복사하면 저장된 비밀번호도 함께 풀릴 수 있습니다.
  • Windows는 x64만, Linux는 x86_64만 제공합니다. 포터블 판은 없습니다.
  • winget은 아직 등록 전입니다(첫 제출 PR 검토 대기). Chocolatey는 일부 버전만 올라갑니다(0.2.8 · 0.2.9는 건너뜀).
  • 네트워크 변경 감지와 폴더 변경 감시는 Windows · macOS · Linux에서 동작합니다.

라이선스

Nexa SQL은 PolyForm Noncommercial 1.0.0 라이선스입니다(비공식 한글본 — 영문본이 우선).

  • 개인 · 비상업 용도는 무료입니다. 비영리 단체 · 교육 · 공공 연구 · 정부 기관의 사용도 허용됩니다.
  • 상업적 사용은 별도 유료 라이선스가 필요합니다. 문의: [email protected]
  • 무료판은 상태줄에 Free · non-commercial use only가 보입니다. 현재는 라이선스가 없어도 모든 기능이 동작합니다(기능 제한 설정 license.gates 기본 끔). 앞으로 일부 편의 기능이 Pro로 제한될 수 있습니다.

라이선스 파일 받기

라이선스는 서명된 오프라인 파일이며 서버에 접속하지 않습니다.

  1. 앱 도움말 ▸ License…(또는 상태줄 배지)에서 이름 · 이메일을 넣고 요청 코드 복사. 명령줄은 nsql license request "이름" 이메일. 요청 코드에는 이 PC 기기 ID의 해시만 담깁니다.
  2. 요청 코드 한 줄을 [email protected] 으로 보내면 nexa-sql.license 파일을 받습니다.
  3. 라이선스 창 ▸ 라이선스 파일 열기… 또는 nsql license install <파일>로 설치하고 nsql license status로 licensed를 확인합니다.

개인 라이선스는 등록한 PC(최대 5대)에서 유효하고, 기본 유효기간은 발급일부터 3년입니다. 백업은 nsql license export <파일>, 제거는 nsql license remove입니다.

↑ 맨 위로