Skip to content
dadbod.vim: Modern database interface for Vim
Vim script
Branch: master
Clone or download
pweissbrod and tpope Add impala adapter
Latest commit f8839a3 Jul 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
autoload Add impala adapter Jul 15, 2019
doc Add impala adapter Jul 15, 2019
plugin Add support for command modifiers Apr 14, 2019
.gitattributes Add .gitattributes Apr 25, 2018
.gitignore Ignore generated doc tags May 22, 2018
CONTRIBUTING.markdown db.vim 1.0 Mar 8, 2018
README.markdown Add impala adapter Jul 15, 2019

README.markdown

dadbod.vim

Dadbod is a Vim plugin for interacting with databases. It's a more modern take on dbext.vim, improving on it on the following ways:

  • Connections are specified with a single URL, rather than prompting you for 14 separate variables
  • All interaction is through invoking :DB, not 53 different commands and 35 different maps (omitting many of the more esoteric features, of course)
  • Supports a modern array of backends, including NoSQL databases:
    • Impala
    • MongoDB
    • MySQL
    • Oracle
    • osquery
    • PostgreSQL
    • Presto
    • Redis
    • SQL Server
    • SQLite
    • Your own easily implemented adapter
  • Easily configurable based on a project directory (as seen in rails.vim, for example), rather than just globally or in a per-file modeline
  • For those that just can't live without some piece of dbext functionality, the option g:dadbod_manage_dbext is provided to force dbext to use Dadbod's default database.

Usage

The :DB command has a few different usages. All forms accept a URL as the first parameter, which can be omitted if a default is configured or provided by a plugin.

Omit further arguments to spawn an interactive console (like psql or redis-cli).

:DB postgresql:///foobar
:DB redis:

If additional arguments are provided, they are interpreted as a query string to pass to the database. Results are displayed in a preview window.

:DB sqlite:myfile.sqlite3 select count(*) from widgets
:DB redis:/// CLIENT LIST

Give a range to run part or all of the current buffer as a query.

:%DB mysql://root@localhost/bazquux

Use < to pass in a filename.

:DB mongodb:///test < big_query.js

There's also a special assignment syntax for saving a URL to a Vim variable for later use.

:DB g:prod = postgres://user:pass@db.example.com/production_database
:DB g:prod drop table users

A few additional URL like formats are accepted for interop:

  • :DB jdbc:sqlserver://...
  • :DB dbext:profile=profile_name
  • :DB dbext:type=PGSQL:host=...
  • :DB $DATABASE_URL (with optional dotenv.vim support)

Plugins can provide their own URL handlers as well. For example, heroku.vim provides support for heroku:appname style URLs.

Installation

Install using your favorite package manager, or use Vim's built-in package support:

mkdir -p ~/.vim/pack/tpope/start
cd ~/.vim/pack/tpope/start
git clone https://tpope.io/vim/dadbod.git
vim -u NONE -c "helptags dadbod/doc" -c q

Promotion

Like dadbod.vim? Star the repository on GitHub and vote for it on vim.org.

Love dadbod.vim? Follow tpope on GitHub and Twitter.

License

Copyright © Tim Pope. Distributed under the same terms as Vim itself. See :help license.

You can’t perform that action at this time.