Skip to content

DB Client

Blyck’s DB client handles five engines — SQLite · Oracle · PostgreSQL · MSSQL · MySQL — through the same interface. Without a separate DB tool, you can connect, explore schemas, write SQL, analyze results, edit data, export, and generate SQL from natural language, all in one window.

Pick an engine from the new tab menu (+) or click a saved connection.

EngineRequired inputDefault portNotes
SQLiteFile pathAuto-switches to read-only if over 256MB or locked
OracleHost · Port · Service Name · User · Password1521Thin by default → auto-falls back to Thick on failure
PostgreSQLHost · Port · Database · User · Password5432Schema and SSL options
MSSQLHost (server\instance) · Port · Database · User · Password1433SQL auth only (Windows integrated auth not supported)
MySQLHost · Port · Database · User · Password3306SSL option

Enabling the Force Thick option in the connection dialog always connects in Thick mode. By default it tries Thin first and falls back to Thick on failure; after connecting, the header shows Oracle connected (Thin) or Oracle connected (Thick). When using Thick mode you must enter the path to the 64-bit Oracle Instant Client in the dialog.

Entering a save name in the connection dialog stores the connection details permanently. The password is protected with OS encryption (Windows DPAPI / macOS Keychain), and from then on you connect instantly with one click, no password entry needed.


Once connected, the left tree shows TABLES / VIEWS / INDEXES / TRIGGERS / ROUTINES sections.

  • Expanding tables · views shows the column list (name · type · PK icon), and double-clicking instantly runs a first-200-rows query in the SQL editor.
  • Double-clicking indexes · triggers · routines loads their DDL into the editor.
  • You can drag table/column names from the tree into the SQL editor to insert them.

Use the top search bar, choosing the name / column / both scope. A column search auto-expands the matching table, and the header shows an N / total count.

ItemAction
Detailed viewColumn type · NULL allowance · default value · index info
Select first 200 rowsAuto-runs the query matching the engine dialect (LIMIT / TOP / ROWNUM)
View DDLLoads the CREATE statement into the editor
Analyze columnNULL ratio · distinct count · mode · numeric stats (min/max/avg, sample-based)

After you run a DDL query, the tree auto-reindexes in the background 500ms later to reflect the change. To refresh manually, click the button in the header.


Open the editor by double-clicking a table or via the New Query button in the tree header.

ButtonAction
Toggle the natural-language→SQL input bar
Run query (Ctrl+Enter)
Stop execution (active only while running)
+Add a SQL tab

At the bottom of the rail, the current panel’s SQL tabs are listed for quick switching.

  • DB name — SQL ▾ : Connection-switch dropdown
  • Autocommit checkbox / Commit / Rollback
  • AI (Ctrl+I) : Cell AI (analyze the grid selection)
  • History / Snippets / Export ▾ / Format / Close (Esc)
  • Run with Ctrl+Enter or the ▶ button.
  • Running with text selected executes only the selection.
  • Table/column names of the connected DB are autocompleted.
  • The Format button runs the built-in formatter, breaking lines before SQL clauses.
  • After running DML, the status line shows Done — N rows changed · Xms or a red error.

Turning the autocommit checkbox OFF switches to manual transaction mode. Running DML isn’t committed immediately and stays in the ● Uncommitted state. Finalize with the Commit button or undo with the Rollback button.


Clicking the ■ button cancels in two stages.

  1. Soft cancel (instant) — The UI returns immediately and invalidates the token to discard the results. The status line shows Execution stopped.
  2. Server-side cancel (best-effort) — Sends a cancel signal to the engine. The query stops when the DB server recognizes it at a checkpoint.
EngineCancellation method
Oracleconnection.break() → returns ORA-01013
MSSQLrequest.cancel() → TDS Attention packet
PostgreSQLpg_cancel_backend(pid) over a separate connection — keeps the existing connection
MySQLKILL QUERY threadId over a separate connection — keeps the existing connection
SQLiteNo server cancel — soft cancel only (immediate stop)

Clicking the SQL editor title DB name — SQL ▾ shows a list of all currently open DB connections, with ✓ marking the current one. Selecting a connection switches only the execution target DB while keeping the editor’s SQL unchanged.


Results are shown in a virtual-scroll grid, so you can smoothly browse hundreds of thousands of rows.

  • The row-number (#) column stays pinned even when scrolling horizontally. Clicking it opens the row detail viewer.
  • The status bar shows the N rows · Xms execution info.
  • NULL is shown distinctly as NULL (distinguished from an empty string).
  • Column width can be adjusted by dragging.
  • Sort: Clicking a column header toggles ascending (▲) · descending (▼).
  • Filter: Typing text in the top field filters in real time across all columns by partial match (filters only displayed rows, no DB re-query).

It shows 5,000 rows by default; beyond that, the Load next 5,000 button accumulates with OFFSET/FETCH loading.

Drag to select a rectangular range, and copy with Export ▾ → Clipboard (TSV) to paste straight into Excel. Use Shift+double-click to view a cell’s full value in the viewer.


Cell editing is enabled only when the result is a single-table SELECT that includes the PK column.

  1. Double-click a cell to edit its value.
  2. Clicking the Commit button adds an UPDATE … WHERE PK=… statement to the editor.
  3. Run it with Ctrl+Enter to apply.

The executed change is recorded in the change history (Ctrl+Shift+H) like any other DML and can be reverted.


Adding new rows · copying rows → INSERT

Section titled “Adding new rows · copying rows → INSERT”

Use the + Row or Copy Row button in the result grid toolbar for staged INSERTs.

ButtonAction
+ RowAdd an empty row (left blank means NULL)
Copy RowAdd a new row duplicating all column values of the selected row

Add rows, edit the cells, then click the Save button. On save, autocommit is temporarily turned OFF and the INSERT is run, so you then finalize with Commit or undo with Rollback.


Choose Export ▾CSV or Excel.

  • Streaming approach: The main process streams directly to disk, so even millions of rows are saved without memory worries.
  • The progress modal shows N / total rows (X%) and you can stop midway with the Cancel button.
  • CSV: Includes a UTF-8 BOM (so Korean displays correctly in Excel).
  • Excel (.xls): 1,048,575-row limit.

Toggle the natural-language input bar with the button on the SQL editor’s left rail.

▸ Top 5 customers by sales this month
▸ Show the daily count of users who signed up last week

Operation order: Keyword analysis → score the entire schema of the active connection → select relevant tables/columns → generate SQL (each step shows progress status and elapsed time). The generated SQL is inserted below the cursor line (it does NOT overwrite existing content). You can undo with Ctrl+Z, and you can also stop during generation with the Cancel button.

Since the generated SQL lands in the editor, you review and run it yourself — it is not run automatically.


Save frequently used SQL to recall it quickly.

  • Click the toolbar Snippets button → Save current SQL (enter a name; if blank, the start of the SQL is used automatically).
  • Clicking an item loads it into the editor; ✕ deletes it.
  • Snippets are stored globally and usable from any DB editor.

Clicking the toolbar History button shows successful queries in newest-first order (duplicates auto-removed). Clicking an item loads it into the editor. History is stored in userData/db-history.json.


Select a cell range in the grid and press Ctrl+I or click the toolbar AI button to ask the AI about the selected data as context.

▸ Analyze the outliers among these
▸ Make an UPDATE query from this data
▸ Why does this column have a high NULL ratio?

It analyzes using the selected values · table name · executed SQL · PK info · engine type as context. If over 200 rows, only the first 200 are passed.


Right-click the tree → Analyze column to see the table’s actual data statistics, sample-based.

status column — NULL 2.3% · Distinct 4 (active, inactive, pending, blocked) · Mode active 87%
amount column — NULL 0% · min 100 · max 9,800,000 · avg 452,000

It provides NULL ratio · distinct count · enum candidates, and for numeric types, min/max/avg. Use it to understand column characteristics before writing queries or to inform index design.


Queries you run directly with Ctrl+Enter in the SQL editor run immediately without confirmation (for power users). In return, all DDL/DML is auto-recorded in the change history and can be reverted (see below). A confirmation dialog appears before running only in these two cases.

PathBehavior
SQL run by the AI (db_query tool)Reads are automatic; writes/destructive (DROP/TRUNCATE/DELETE without WHERE, etc.) get a confirmation dialog. prod-labeled connections are escalated by one step
SQL code block ▶ Run (AI replies · code editor code lens)DROP/DELETE/UPDATE/TRUNCATE/ALTER/GRANT/REVOKE, etc. require confirmation with a query preview

Operations like right-click → DROP TABLE… in the schema tree go through a strong confirmation that requires typing the table name to run.

When DDL/DML runs, the pre-change data is automatically backed up so both human and AI runs can be reverted.

  • Small (≤1,000 rows, single table with PK): Pre-change rows are kept as JSON in the internal history DB.
  • Large / complex / no PK: A backup table (blyck_bak_…) is created in the target DB and kept, then auto-deleted after revert.
  • Some DDL such as DROP / TRUNCATE has no reverse SQL and is marked as a non-revertible item.

In the change history (Ctrl+Shift+H), select an item and revert it. Even a large UPDATE · DELETE without WHERE can be restored from backup data.


AI Chat calls DB tools directly.

▸ Find duplicate emails in this table
▸ Show the orders schema and recommend indexes
▸ Top 10 customers with high order-cancellation rates last month

Operation order: Check schema (db_schema) → analyze columns if needed → write/run the query (db_query) → self-correct on failure. Write queries always pass through the safety mechanisms above (confirmation dialog).


FeatureDoc
Link a DB to the SQL editor for SQL autocompletion in codeCode Editor
DB schema/results via RAG searchSearch (RAG)
Change history · revert DMLChange History · Git
Automate DB work with AI ChatAI Chat

I get an Oracle NJS-116 error.
This is a password-verifier method the Thin driver doesn’t support. In the connection dialog, enable Force Thick and enter the 64-bit Instant Client path.

I pressed ■ Stop but the query won’t stop.
Server-side cancellation is best-effort and is recognized at the next checkpoint. Wait a moment for heavy aggregation queries. SQLite has no server stage, so it stops immediately.

The app dies during a large query.
Instead of the grid clipboard copy, use Export ▾ (disk streaming). Excel has a 1-million-row limit.

Korean is garbled when I open a CSV in Excel.
CSV is saved with a UTF-8 BOM. Use Excel’s Get Data → set encoding to 65001 UTF-8, or paste directly via Clipboard (TSV).

Cell editing doesn’t work.
It’s enabled only for single-table SELECT results that include a PK column. JOIN · GROUP BY · UNION · DISTINCT or view results can’t be edited.

Natural-language→SQL uses the wrong table.
Rebuild the index and register business terms · table mappings in the 📒 Glossary to improve accuracy.

The tree is empty right after connecting.
Schema indexing can take a few seconds after a successful connection. Try clicking the header refresh button. During an Oracle Thick fallback, completing the connection can take longer.