ArchitectureA supervised JVM-class runtime — OLTP on seven engines, OLAP on three. AI-native, MCP-native, observable as plain SQL.Read the architecture
Está viendo la edición Perú. Está viendo la edición Colombia. You're viewing the Pakistan edition. Cambiar a la edición global →Cambiar a la edición global →Switch to the global edition →

Database export and import with SSE progress streaming added to Studio

Studio adds multi-table Excel export and import from the application bar. Export streams progress over Server-Sent Events with per-table row counts in a live snackbar ; import reports per-table results on completion. Table names validate against live metadata before SQL composition.

Studio's application bar gains a multi-table data-mobility pair : export the live state of any user-selected set of tables to an Excel workbook, and re-import an Excel workbook back into the database. Both operations stream progress in real time over Server-Sent Events so the operator sees per-table activity without polling.

Export — what flows over the wire

  • Table selection from the UI. Operators pick the target tables from Studio's tree ; the client sends the list to a server endpoint that opens an SSE channel for the response.
  • Per-table row-count events. The server emits one event per table with the row count and the export status (queued, in-progress, done, error). The browser renders each event into a snackbar entry as it arrives.
  • Excel workbook assembly. Server-side, each table writes to its own worksheet in a single workbook ; large result sets stream rather than materialising the full sheet in memory.
  • Final download. When the last event is received, the snackbar surfaces the download link ; the operator clicks once to fetch the assembled workbook.

Import — symmetric flow, additional safety

  • Workbook validation before any SQL. The server reads each worksheet's header row, looks up the target table in the live database metadata, and rejects the import with a structured error if the table does not exist or the columns do not match. No SQL is constructed against a user-supplied table name.
  • Per-table progress. Same SSE channel pattern : one event per table with row-count progress, then a final summary event with rows inserted, rows skipped and rows failed.
  • Transactional boundary per table. Each table import runs inside its own transaction so a failure on table n does not roll back tables 1 through n-1.

The snackbar rewrite

The snackbar queue component was rewritten so SSE mutations apply on receipt rather than batching until the next render tick. The previous behaviour was correct but visually flat — five events arriving in 50 ms would render as a single transition after the tick, hiding the streaming activity. The new component re-renders per event, so the operator sees the row counts climb in real time and the export feels live instead of polled.

The pattern — server-emitted SSE events, table-name validation against live metadata, per-table transactional boundaries — generalises to other bulk-mobility flows on the roadmap : bulk archival, bulk anonymisation, cross-environment data copy.

See the feature →

← All posts