All Projects → KenanBek → dbui

KenanBek / dbui

Licence: Apache-2.0 license
Universal Database CLI for MySQL, PostgreSQL, and SQLite. Terminal User Interface Application.

Programming Languages

go
31211 projects - #10 most used programming language
ruby
36898 projects - #4 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to dbui

cursive-tabs
Tabs for gyscos/cursive views 🖥️
Stars: ✭ 21 (-80.91%)
Mutual labels:  tui
textual
Textual is a TUI (Text User Interface) framework for Python inspired by modern web development.
Stars: ✭ 16,180 (+14609.09%)
Mutual labels:  tui
fire
The Pre-Cambrian DOOM animation in the terminal!
Stars: ✭ 22 (-80%)
Mutual labels:  tui
console engine
A simple terminal framework to draw things and manage user input
Stars: ✭ 144 (+30.91%)
Mutual labels:  tui
lemmy-terminal-viewer
a terminal user interface for lemmy
Stars: ✭ 21 (-80.91%)
Mutual labels:  tui
notcurses-zig-example
Demo showing how to use Notcurses library for building terminal UIs with Zig
Stars: ✭ 32 (-70.91%)
Mutual labels:  tui
inquire
A Rust library for building interactive prompts
Stars: ✭ 419 (+280.91%)
Mutual labels:  tui
resto
🔗 a CLI app can send pretty HTTP & API requests with TUI
Stars: ✭ 113 (+2.73%)
Mutual labels:  tui
awesome-fetch
Command-line fetch tools for system/other information
Stars: ✭ 177 (+60.91%)
Mutual labels:  tui
py menu
🛠 Snack TUI (1)终端菜单---配置工具利器 (2)三级菜单 (3)编辑页面封装 【CentOS6.X+】
Stars: ✭ 20 (-81.82%)
Mutual labels:  tui
ScoreboardUI
Pseudo console GUI for .NET
Stars: ✭ 20 (-81.82%)
Mutual labels:  tui
mauview
A Go TUI library based on tcell.
Stars: ✭ 40 (-63.64%)
Mutual labels:  tui
pystyle
The source of my Python library, pystyle.
Stars: ✭ 158 (+43.64%)
Mutual labels:  tui
rustpad
Multi-threaded Padding Oracle attacks against any service. Written in Rust.
Stars: ✭ 75 (-31.82%)
Mutual labels:  tui
damon
A terminal UI (TUI) for HashiCorp Nomad
Stars: ✭ 274 (+149.09%)
Mutual labels:  tui
dflat20
D-Flat Windowing System (SAA/CUA Interface) Version 20
Stars: ✭ 42 (-61.82%)
Mutual labels:  tui
onix
A reactive configuration manager designed to support Infrastructure as a Code provisioning, and bi-directional configuration management providing a single source of truth across multi-cloud environments.
Stars: ✭ 89 (-19.09%)
Mutual labels:  database-management
px
ps and top for human beings
Stars: ✭ 151 (+37.27%)
Mutual labels:  tui
FIFA-18-Management-System
This repository contains the whole project. This project was intended to exhibit as a DBMS project but it can also act as a web development project as it includes complete front end and back end.
Stars: ✭ 42 (-61.82%)
Mutual labels:  database-management
cryptgo
A terminal application to watch crypto prices!
Stars: ✭ 123 (+11.82%)
Mutual labels:  tui

🗄 DBUI: Database CLI

dbui is database CLI for MySQL and PostgreSQL. It is the terminal user interface application built with the tview.

GitHub release (latest by date) GitHub Workflow Status Go Report Card Codecov

dbui screenshot

dbui provides features like,

  • Connect to multiple data sources and instances.
  • List all schemas in a selected data source.
  • List all tables in a selected schema.
  • Preview a selected table.
  • Execute custom SQL queries on a selected table or schema.
  • User-friendly UI features like,
    • query execution status,
    • warning and error messages,
    • full-screen and focus modes,
    • mouse support.

Runs on Mac, Linux, and Windows.

Linux

dbui is available as downloadable binaries from the releases page. Download the .deb or .rpm from the releases page and install with sudo dpkg -i and sudo rpm -i respectively.

Currently supported databases

  • MySQL
  • PostgreSQL
  • SQLite

What's next?

  • Auto-generate SQL Queries for Insert, Update, Delete.
  • Save frequently used SQL Queries.
  • Configurable keyboard layout.
  • Autocomplete for SQL Queries.

Current status

  • 🚧 Under development, expect bugs, errors, and unexpected crashes.
  • 🐞 Bug and error report very well appreciated.
  • 📣 I highly recommend to check for periodic updates.
Known Issues
  • ❗️Critically low amount of tests.
  • ⚠️Having multiple connections and many queries triggers a high CPU load. Now when this PR merged, as a next step, I will work on profiling the application.

Demo

Install

brew tap kenanbek/dbui https://github.com/kenanbek/dbui
brew install dbui

Other installation options. If you have installed the first versions of dbui, you might need to un-tap the old cask URL. Check this for more information.

Demo with in-memory dataset

You can run dbui with a demo data source.

dbui -demo

This command will open dbui with two dummy data sources, and you can navigate through the demo dataset.

To test it with a real database, you can use the following steps.

Demo with Docker containers

Step 1. Run demo databases

docker run -d --name dbui-mysql-demo -p 3316:3306 -e MYSQL_ROOT_PASSWORD=demo genschsa/mysql-employees
docker run -d --name dbui-postgresql-demo -p 5432:5432 ghusta/postgres-world-db:2.4-alpine

Step 2. Create dbui.yml configuration file

Create dbui.yml file in the current folder with the following content:

dataSources:
  - alias: employees
    type: mysql
    dsn: "root:demo@(localhost:3316)/employees"
  - alias: world-db
    type: postgresql
    dsn: "user=world password=world123 host=localhost port=5432 dbname=world-db sslmode=disable"
  - alias: chinook
    type: sqlite
    dsn: "internal/sqlite/testdata/chinook.db"
defaut: employees

More about configuration files.

Step 3. Start dbui

dbui

Table of Contents

Usage

Install

Option 1: Brew

brew tap kenanbek/dbui https://github.com/kenanbek/dbui
brew install dbui

If you have installed the first versions of dbui, you might need to un-tap the old cask URL. Check this for more information.

Option 2: Go Get

go get github.com/kenanbek/dbui # for latest release

# or
go get github.com/kenanbek/dbui@main # for the development version

Option 3: Source Code (+demo databases)

git clone https://github.com/KenanBek/dbui.git
cd dbui
make demodbs # runs docker containers with mysql and postgresql demo dbs

# you can destroy them by executing
make demodbs/destroy

Copy configuration and run:

touch dbui.yml # check below for the content
make run

Copy/paste the configuration provided below for demo databases.

Configuration

By default dbui uses configuration file (dbui.yml).

dataSources:
  - alias: employees
    type: mysql
    dsn: "root:demo@(localhost:3316)/employees"
  - alias: world-db
    type: postgresql
    dsn: "user=world password=world123 host=localhost port=5432 dbname=world-db sslmode=disable"
defaut: employees

First, it checks in the current directory, then in the user's home directory.

All provided database connections will be available in the application, and you can switch among them without restarting the application.

Alternatively, it is possible to start dbui for a single database connection using a DSN (data source name) and type arguments.

$ dbui -dsn <connection string> -type <data source type>

# example for a mysql connection
$ dbui -dsn "codekn:codekn@(localhost:3306)/codekn_omni" -type mysql

Configuration Order

# when
$ dbui
# read from `./dbui.yml` if not then from `~/dbui.yml`

# when
$ dbui -f /my/custom/dir/mydbui.yml
# read from custom directory `/my/custom/dir/mydbui.yml`

# when
$ dbui -dsn "<connection-string>" -type mysql
# init single connection mode

Default Keyboard Layout

dbui keyboard hot keys

Focus Hot Keys

  • Ctrl-A - sources
  • Ctrl-S - schemas
  • Ctrl-D - tables
  • Ctrl-E - preview
  • Ctrl-Q - query

Special

  • Tab - navigate to the next element
  • Shift-Tab - navigate to the prev element
  • Ctrl-F - toggle focus-mode
  • Ctrl-C - exit

Table Specific

Use these keys when the tables panel is active:

  • e - describe selected table
  • p - preview selected table (works as ENTER but does not change focus)

Preview Specific

Use these keys when the data preview panel is active:

  • y - copy a selected row into the clipboard (coming soon).

Contribution

The code and its sub-packages include various form of documentation: code comments or README files. Make sure to get familiar with them to know more about internal code structure. This section includes references to additional READMEs.

DBUI is a work in progress, and any feedback/contributions are more than welcome.

The backlog can be viewed on GitHub Issues page.

References

This project inspired by k9s , lazydocker, and htop.

I use tview terminal UI for the interactive user interface:

For test purposes, I use these Docker-based demo databases:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].