synle / sqlui-native

SQLUI Native (sqluinative) is a simple UI client for most SQL Engines written in Electron. It is compatible with Windows, Mac, Ubuntu / Debian and Redhat. It supports most dialects of RMBDs like MySQL, Microsoft SQL Server, Postgres, SQLite and has limited supports for Cassandra, MongoDB, Redis, CockroachDB, Azure CosmosDB and Azure Storage Tab
https://synle.github.io/sqlui-native/
MIT License
60 stars 8 forks source link
azure azure-storage cassandra cockroachdb cosmosdb mongodb mssql mysql postgresql redis sql sqlite sqlui-native sqluinative

build-main

sqlui-native

64

sqlui-native is a simple UI client for most SQL Engines written in Electron. It is compatible with most desktop OS's and support most dialects of RDBMS like MySQL, Microsoft SQL Server, Postgres, SQLite, Cassandra, MongoDB, Redis, Azure CosmosDB and Azure Storage Table.

It supports multiple Windows, so you can have different sets of queries and connections side by side. The connections and queries are all stored locally, so you can continue where you left off in later visits.

Downloads

Refer to the following link for download information.

Supported OS's

Supported Database Adapters

The list below are supported data stores. You can also refer to this link for General Queries

Features

Overall Demo

demo-full

Import and Export

Import and Export can be used to share connections across different machines and users. Below is a sample import config.

[
  {
    "_type": "connection",
    "id": "connection.1643485516220.4798705129674932",
    "connection": "postgres://postgres:password@localhost:5432",
    "name": "sy postgres"
  },
  {
    "_type": "query",
    "id": "query.1643561715854.5278536054107370",
    "name": "Employee Query on Postgres",
    "sql": "SELECT\n  *\nFROM\n  employees\nLIMIT\n  10",
    "connectionId": "connection.1643485516220.4798705129674932",
    "databaseId": "music_store"
  }
]

You can also drag and drop the file directly into sqlui-native application. At the moment, we only support drag and drop for a single file.

demo-import-export

Session Management

This application supports multiple windows / instances. Sessions are used to control which instances it persist the data with. Also these sessions, and the associated connections and queries are persisted locally. So you can continue where you left off in the future.

demo-session

Dark Mode

Dark mode will be turned on automatically with respect to your OS Preference. You can update settings to prefer Dark Mode or Light Mode if desired.

demo-darkmode

Query Tabs

Query Tab Orientation

When there is more than 20 tabs, the query tabs will be wrapped vertically.

image

Reordering Query Tabs

Query tabs can be re-ordered by drag and drop the query tabs bar.

tab-ordering

Resizing the sidebar

The left sidebar can be resized by clicking and dragging the small section between the sidebar and the query box.

sidebar-resize

Command Palette

Similar to VS Code and Sublime Text, sqlui-native comes with a command palette that lets you reach your mostly used command via a key combo CMD + P or Ctrl + P on Windows.

image

Connection Hints

Sample URI connection string can be accessed by clicking on the Show Connection Hints on New / Edit Connection Page. Then you can click on the sample URI connection to use that sample connection string as a starting place.

image

Settings

Settings can be accessed via the top right menu icon. It allows you to set up preferred settings for things like Editor and Color Theme, etc...

image

image

Data Migration

If you happens to work with different database engine, there's a chance you want to move data from one engine to another engine. You can use Data Migration to craft a query to pull in data from the old engine and select a destination to generate the new schema / data for the new engine.

image

image

Migration of Real Existing Connection

Use this data migration option to move data from an existing connection

image

Migration of Raw JSON Data

Use this data migration option to move raw JSON data

image

Bookmarks

The system allows you to bookmark connections and queries. Bookmarked items can be applied to any workspace.

Adding new bookmark

image

image

Open a bookmark

You can select and apply a bookmarked item from bookmarks page which can be accessed via the hamburger menu bar on the top right and select Bookmarks

image

image

Recycle bin

By default, all closed queries and deleted connections will be stored inside of a recycle bin which you can always restore at a later. To access the recycle bin, click on the hamburger menu bar on the top right and select Recycle Bin.

image

image

Hard Delete

If you want to permanently delete those and not put it in the recycle bin, you can set the Delete Mode to be hard delete.

image

Record Pages

New Record Page

image

image

Record Details / Edit Record Page

Contributing

Dev Note

Here is the link where you can find information about how run this application locally.

Features / TODO's:

Limitations

sqlite Limitations

sqlite doesn't support multiple statements. So if you have multiple inserts or updates in a single query, it will not work. Refer to this Stackoverflow post for more details related to sqlite.

If you want to do bulk inserts, use bulk inserts API instead.

INSERT INTO
  art (Name)
VALUES
  ('Queen'),
  ('Kiss'),
  ('Spyro Gyra')

CockroachDB Limitations

CockroachDB can be connected using postgresSQL. Replace ?sslmode=require with sslmode=no-verify

Sample connection will look like this

postgres://demo:demo26472@127.0.0.1:26257/movr?sslmode=no-verify

Cassandra Limitations

Cassandra Keyspaces are mapped to sqlui-native databases. And Cassandra Column Families are mapped to sqlui-native table.

How to get connection string for CosmosDB with Cassandra API?

image

Sample CosmosDB with Cassandra API Connection String

It will look something like this.

cassandra://USERNAME:PRIMARY PASSWORD@CONTACT POINT:PORT

MongoDB Limitations

MongoDB Collections is mapped to sqlui-native table. We scan the first 5 Documents to come up with the schema for the columns.

Create new MongoDB Database

As of now (v1.27.0), you can create new mongodb using the following syntax

db.createDatabase('new-database-name');

Redis Limitations

Due to the size of keys within Redis connection, we will not show all keys in the Redis cache.

How to get connection string for Azure Redis Cache?

Azure CosmosDB Limitations

Azure CosmosDB Databases are mapped to sqlui-native Databases. And Azure CosmosDB Containers are mapped to sqlui-native Tables. We scan the first 5 items to come up with the schema for the columns.

Tested for Azure CosmosDB (with Core SQL).

How to get connection string for CosmosDB with Core SQL API?

Here's how to set up the connection. Open your resource, and click on Keys. Then copy and use either PRIMARY CONNECTION STRING or SECONDARY CONNECTION STRING

image image

Sample CosmosDB with Core SQL API Connection String

It will look something like this.

cosmosdb://<your_primary_connection_string>

or

cosmosdb://<your_secondary_connection_string>

Azure Table Storage Limitations

Azure Table Storage tables are mapped to sqlui-native Tables. We scan the first 5 items to come up with the schema for the columns.

Setting up connection string

Here's how to set up the connection.

image image

Sample connection will look like this

aztable://<your_connection_string>

Suggestion?

Use the following link to file a bug or a suggestion.