termdbms: A TUI for viewing and editing databases, written in Go
made with modernc.org/sqlite, charmbracelet/bubbletea, and charmbracelet/lipgloss
Works with keyboard:
… And mouse!
- Run SQL queries and display results
- Add/remove rows/columns/cells
- Rename anything
- Filter tables by fuzzy search
- MySQL/ PostgreSQL support
- Better editing
- No-style mode for terminal emulators that don’t support ANSI / low power machines.
- Support for 32-bit machines.
How To Build
GOOS=linux GOARCH=amd64 go build
ARM (runs kind of slow depending on the specs of the system)
GOOS=linux GOARCH=arm GOARM=7 go build
GOOS=windows GOARCH=amd64 go build
GOOS=darwin GOARCH=amd64 go build
Whatever terminal emulator used should support ANSI escape sequences. If there is an option for 256 color mode, enable it.
- The headers wig out sometimes in selection mode
- Possible race conditions with getting data initialized, only happens when debugging?
- Serializing a numeric string change (like “1234”) sometimes appends a decimal at the end, even though go recognizes it as a string when serializing. This is likely a bug at the database driver level, or I am not good at this.
-p database path (absolute) -h prints this message
Scroll up + down to navigate table Move cursor to select cells for full screen viewing
[WASD] to move around cells [ENTER] to select selected cell for full screen view [UP/K and DOWN/J] to navigate schemas [LEFT/H and RIGHT/L] to navigate columns if there are more than the screen allows. Also to control the cursor of the text editor in edit mode. [M(scroll up) and N(scroll down)] to scroll manually [Q or CTRL+C] to quit program [B] to toggle borders! [C] to expand column [P] in selection mode to write cell to file [ESC] to exit full screen view, or to enter edit mode
EDIT MODE (cosmetic until serialization is working)
[ESC] to enter edit mode with no pre-loaded text input from selection When a cell is selected, press [:] to enter edit mode with selection pre-loaded The text field in the header will be populated with the selected cells text. Modifications can be made freely. [ESC] to clear text field in edit mode [ENTER] to save text. Anything besides one of the reserved strings below will overwrite the current cell. [R] to redo actions, if applicable. [U] to undo actions, if applicable. [:q] to exit edit mode [:s] to save database to a new file [:s!] to overwrite original database file [:h] to display help text