A Visual Studio Code extension for working with Exasol databases. Provides comprehensive database management, intelligent SQL editing, and powerful query execution capabilities.
Download exasol-vscode-1.0.1.vsix from the latest release
Option A: VS Code UI
- Open VS Code
- Extensions view:
Cmd+Shift+X(Mac) orCtrl+Shift+X(Windows/Linux) - Click "..." menu (top right)
- Select "Install from VSIX..."
- Choose the downloaded
.vsixfile - Reload if/when prompted
Option B: Command Line
code --install-extension exasol-vscode-1.0.1.vsix-
Add Connection
- Click the Exasol icon ("X") in the left sidebar under Extensions
- Click the
+button - Enter:
Local Exasol,localhost:8563,sys,exasol
-
Browse Database
- Expand connection → schemas → tables → columns
- See row counts and column types
-
Execute Query
- Create
test.sql - Type:
SELECT * FROM INFORMATION_SCHEMA.TABLES LIMIT 10; - Press
Cmd+Enter(Mac) orCtrl+Enter(Windows/Linux)
- Create
- Multiple connections with secure password storage (VS Code Secret Storage API)
- Switch between connections easily
- Test connections before saving
- Active connection shown in status bar
- Execute full file:
Ctrl+Enter/Cmd+Enter - Execute selection:
Ctrl+Shift+Enter/Cmd+Shift+Enter - Cancellable queries - stop long-running operations
- Export results to CSV/JSON
- Automatic LIMIT clause for SELECT queries
- Query timeout and row limits
- Context-aware completions: keywords, functions, tables, views, columns
- 140+ SQL keywords, 180+ built-in functions
- Smart suggestions based on current schema
- Schema-qualified names (
SCHEMA.TABLE.COLUMN) - 5-minute metadata cache for performance
- Complete hierarchy: Connection → Schema → Tables/Views → Columns
- Table row counts displayed
- Column types and nullable status
- System schemas filtered
- Lazy loading for performance
- Preview Table Data - First 100 rows instantly
- Show DDL - Generate CREATE TABLE/VIEW statements
- Generate SELECT - Auto-create queries with all columns
- Describe Table - Detailed column information
- Set Active Schema - Change session context
- Interactive table with real-time filtering
- Sortable columns - click headers to sort
- Column tooltips for long values
- Row counter (visible/total)
- Export CSV/JSON with proper formatting
- Performance metrics (execution time, row count)
- Active schema tracking per connection
- Persistent session state across VS Code restarts
- Status bar integration
- Quick schema switching
- Automatic tracking of all executed queries
- Configurable size (default: 1000 queries)
- Execution time, row counts, and errors
- Query previews with tooltips
- Success/error indicators
- Syntax highlighting for Exasol SQL
- Comment support (line and block)
- Code folding with region markers
- File extensions:
.sql,.exasol,.exs
Clone this repo to your local machine then run:
cd exasol-vscode
npm install
npm run compile
code .Option A: Using F5 Key
- Just press
F5 - A new VS Code window opens with "[Extension Development Host]" in the title
- ✅ Extension is now running!
Option B: Using Run Menu
- Click
Runmenu →Start Debugging - Or click the green play button in the debug panel
- ✅ Extension is now running!
Benefits:
- Hot reload on changes (press
F5again) - Debug console and breakpoints
- Extension logs visible
Clone this repo to your local machine then run:
-
Install vsce (VSCode Extension Manager)
npm install -g @vscode/vsce
-
Package the extension
cd exasol-vscode npm install vsce packageThis creates:
exasol-vscode-2.0.0.vsix -
Install the Package
code --install-extension exasol-vscode-2.0.0.vsix- Open VS Code
- Go to Extensions view (
Cmd+Shift+XorCtrl+Shift+X) - Click the "..." menu in the top right
- Select "Install from VSIX..."
- Choose
exasol-vscode-2.0.0.vsix - Reload VS Code when prompted
Exasol: Add Connection- Add database connectionExasol: Refresh Connections- Refresh treeExasol: Execute Query- Execute entire fileExasol: Execute Selected Query- Execute selectionExasol: Show Query History- View historyExasol: Export Results to CSV- Export current resultsExasol: Clear Autocomplete Cache- Clear IntelliSense cache
Preview Table Data- Show 100 rowsDescribe Table- View column definitionsShow Table DDL- Generate CREATE TABLEShow View DDL- Generate CREATE VIEWGenerate SELECT Statement- Create SELECT with all columnsSet as Active Schema- Make schema active
| Action | Windows/Linux | Mac |
|---|---|---|
| Execute Query | Ctrl+Enter |
Cmd+Enter |
| Execute Selection | Ctrl+Shift+Enter |
Cmd+Shift+Enter |
| Autocomplete | Ctrl+Space |
Ctrl+Space |
| Command Palette | Ctrl+Shift+P |
Cmd+Shift+P |
File > Preferences > Settings → Search "Exasol":
{
"exasol.maxQueryHistorySize": 1000,
"exasol.queryTimeout": 300,
"exasol.maxResultRows": 10000,
"exasol.connectionValidationTimeout": 1,
"exasol.autoComplete": true
}maxQueryHistorySize- Queries to keep in history (default: 1000)queryTimeout- Timeout in seconds (default: 300)maxResultRows- Max rows to fetch (default: 10000)connectionValidationTimeout- Stale detection timeout (default: 1s)autoComplete- Enable IntelliSense (default: true)
rm -rf out node_modules
npm install
npm run compile- Close ALL VS Code windows
- Reopen and press F5
npm run compiletelnet localhost 8563 # Verify Exasol is running- Check credentials (sys:exasol)
- Verify port 8563 accessible
- Check firewall settings
- Check:
"exasol.autoComplete": true - Run: "Exasol: Clear Autocomplete Cache"
- Verify active connection set
- Check status bar shows active connection
- Verify SQL syntax
- Check user permissions
git clone <repository-url>
cd exasol-vscode
npm install
npm run compilenpm run watch # Auto-compile on changes
npm run compile # Compile once
npm test # Run all tests
npm run test:unit # Unit tests only
npm run test:watch # Watch modenpm run watch # Terminal 1: auto-compile
# Press F5 # VS Code: launch extensionexasol-vscode/
├── src/
│ ├── extension.ts # Entry point
│ ├── connectionManager.ts # Connections & credentials
│ ├── queryExecutor.ts # Query execution
│ ├── sessionManager.ts # Schema context
│ ├── objectActions.ts # Table actions
│ ├── providers/
│ │ ├── completionProvider.ts # IntelliSense
│ │ ├── objectTreeProvider.ts # Object browser
│ │ └── queryHistoryProvider.ts # Query history
│ ├── panels/
│ │ └── resultsPanel.ts # Results viewer
│ └── test/ # 32 tests
├── package.json # Extension manifest
└── syntaxes/
└── exasol-sql.tmLanguage.json # Syntax highlighting
- Update version in
package.json - Update
CHANGELOG.md - Test:
npm run compile && npm test
vsce package
# Upload exasol-vscode-0.1.6.vsix to GitHub releasevsce package (NOT --no-dependencies). Extension requires @exasol/exasol-driver-ts and ws at runtime (~1.07 MB, 198 files).
Via Command:
code --uninstall-extension exasol.exasol-vscodeVia UI: Extensions → "Exasol" → Gear icon → Uninstall
- Very large result sets (>10,000 rows) may impact rendering performance
- Query cancellation relies on driver support; some queries may not cancel immediately
- This extension uses the Exasol TypeScript driver, which currently only supports cloud file uploads. You will get an error trying to upload local files. In that case, stage the file in a cloud location for upload.
- Issues: GitHub Issues
- Tests: src/test/README.md
- AI Agents: .github/copilot-instructions.md
Contributions welcome! Please submit issues or pull requests.
ISC