usql
usql is a universal command-line interface for SQL databases
About usql
This large README is shown as a plain-text preview. Read the full README at the source
<div align="center"> <img src="https://raw.githubusercontent.com/xo/usql-logo/main/usql.png" height="120"> </div> <div align="center"> <a href="#installing" title="Installing">Installing</a> | <a href="#building" title="Building">Building</a> | <a href="#database-support" title="Database Support">Database Support</a> | <a href="#using" title="Using">Using</a> | <a href="#features-and-compatibility" title="Features and Compatibility">Features and Compatibility</a> | <a href="https://github.com/xo/usql/releases" title="Releases">Releases</a> | <a href="#contributing" title="Contributing">Contributing</a> </div> <br/> `usql` is a universal command-line interface for PostgreSQL, MySQL, Oracle Database, SQLite3, Microsoft SQL Server, [and many other databases][databases] including NoSQL and non-relational databases! `usql` works with [SQL and NoSQL databases][databases] from a command line modelled on PostgreSQL's `psql`. `usql` supports most of the core `psql` features, such as [variables][variables], [backticks][backticks], [backslash commands][commands] and has additional features that `psql` does not, such as [multiple database support][databases], [copying between databases][copying], [context-based completion][completion], and [terminal graphics][termgraphics]. Database administrators and developers that would prefer to work with a tool like `psql` with non-PostgreSQL databases, will find `usql` intuitive, easy-to-use, and a great replacement for the command-line clients/tools for other databases. [![Unit Tests][usql-ci-status]][usql-ci] [![Go Reference][goref-usql-status]][goref-usql] [![Releases][release-status]][Releases] [![Discord Discussion][discord-status]][discord] [usql-ci]: https://github.com/xo/usql/actions/workflows/test.yml "Test CI" [usql-ci-status]: https://github.com/xo/usql/actions/workflows/test.yml/badge.svg "Test CI" [goref-usql]: https://pkg.go.dev/github.com/xo/usql "Go Reference" [goref-usql-status]: https://pkg.go.dev/badge/github.com/xo/usql.svg "Go Reference" [release-status]: https://img.shields.io/github/v/release/xo/usql?display_name=tag "Latest Release" [discord]: https://discord.gg/WDWAgXwJqN "Discord Discussion" [discord-status]: https://img.shields.io/discord/829150509658013727.svg?label=Discord&logo=Discord&colorB=7289da&style=flat-square "Discord Discussion" [installing]: #installing "Installing" [databases]: #database-support "Database Support" [releases]: https://github.com/xo/usql/releases "Releases" ## Installing `usql` can be installed [via Release][], [via Homebrew][], [via AUR][], [via Go][] or [via Docker][]: [via Release]: #installing-via-release [via Homebrew]: #installing-via-homebrew-macos-and-linux [via AUR]: #installing-via-aur-arch-linux [via Go]: #installing-via-go [via Docker]: #installing-via-docker ### Installing via Release 1. [Download a release for your platform][releases] 2. Extract the `usql` or `usql.exe` file from the `.tar.bz2` or `.zip` file 3. Move the extracted executable to somewhere on your `$PATH` (Linux/macOS) or `%PATH%` (Windows) ### Installing via Homebrew (macOS and Linux) Install `usql` from the [`xo/xo` tap][xo-tap] in the usual way with the [`brew` command][homebrew]: ```sh # install usql with most drivers $ brew install xo/xo/usql ``` Support for [ODBC databases][databases] is available through the `--with-odbc` install flag: ```sh # add xo tap $ brew tap xo/xo # install usql with odbc support $ brew install --with-odbc usql ``` ### Installing via AUR (Arch Linux) Install `usql` from the [Arch Linux AUR][aur-bin] in the usual way with the [`yay` command][yay]: ```sh # install usql with most drivers $ yay -S usql-bin ``` `usql-bin` installs the released binary. To build from source instead, use the [`usql`][aur] package, which takes considerably longer because it compiles every driver: ```sh # build usql with most drivers from source $ yay -S usql ``` Alternately, build and [install using `makepkg`][arch-makepkg]: ```sh $ git clone https://aur.archlinux.org/usql.git && cd usql $ makepkg -si ``` ### Installing via Go Install `usql` in the usual Go fashion: ```sh # install latest usql version with base drivers $ go install github.com/xo/usql@latest # alternately, install usql with most drivers (see below for info about build tags) $ go install -tags most github.com/xo/usql@latest ``` See [below for information](#building) on `usql` build tags. ### Installing via Docker An [official container image (`docker.io/usql/usql`)][docker-hub] is maintained by the `usql` team, and can be used with Docker, Podman, or other container runtime. [docker-hub]: https://hub.docker.com/r/usql/usql Install `usql` with Docker, Podman, or other container runtime: ```sh # run interactive shell and mount the $PWD/data directory as a volume for use # within the container $ docker run --rm -it --volume $(pwd)/data:/data docker.io/usql/usql:latest sqlite3://data/test.db Trying to pull docker.io/usql/usql:latest... Getting image source signatures Copying blob af48168d69d8 done | Copying blob efc2b5ad9eec skipped: already exists Copying config 917ceb411d done | Writing manifest to image destination Connected with driver sqlite3 (SQLite3 3.45.1) Type "help" for help. sq:data/test.db=> \q # run postgres locally $ docker run --detach --rm --name=postgres --publish=5432:5432 --env=POSTGRES_PASSWORD=P4ssw0rd docker.io/usql/postgres # connect to local postgres instance $ docker run --rm --network host -it docker.io/usql/usql:latest postgres://postgres:P4ssw0rd@localhost Connected with driver postgres (PostgreSQL 16.3 (Debian 16.3-1.pgdg120+1)) Type "help" for help. pg:postgres@localhost=> \q # run specific usql version $ docker run --rm -it docker.io/usql/usql:0.21.5 ``` ## Building When building `usql` out-of-the-box with `go build` or `go install`, only the [`base` drivers][databases] for PostgreSQL, MySQL, SQLite3, Microsoft SQL Server, Oracle, CSVQ will be included in the build: ```sh # build/install with base drivers (PostgreSQL, MySQL, SQLite3, Microsoft SQL Server, # Oracle, CSVQ) $ go install github.com/xo/usql@main ``` Other databases can be enabled by specifying the [build tag for their database driver][databases]. ```sh # build/install with base, Avatica, and ODBC drivers $ go install -tags 'avatica odbc' github.com/xo/usql@main ``` For every build tag `<driver>`, there is also a `no_<driver>` build tag that will disable the driver: ```sh # build/install most drivers, excluding Avatica, Couchbase, and PostgreSQL $ go install -tags 'most no_avatica no_couchbase no_postgres' github.com/xo/usql@main ``` By specifying the build tags `most` or `all`, the build will include most, and all SQL drivers, respectively: ```sh # build/install with most drivers (excludes CGO drivers and problematic drivers) $ go install -tags most github.com/xo/usql@main # build/install all drivers (includes CGO drivers and problematic drivers) $ go install -tags all github.com/xo/usql@main ``` ## Database Support `usql` works with all Go standard library compatible SQL drivers supported by [`github.com/xo/dburl`][dburl]. The list of drivers that `usql` was built with can be displayed with the [`\drivers` command][commands]: ```sh $ cd $GOPATH/src/github.com/xo/usql # build excluding the base drivers, and including cassandra and moderncsqlite $ go build -tags 'no_postgres no_oracle no_sqlserver no_sqlite3 cassandra moderncsqlite' # show built driver support $ ./usql -c '\drivers' Available Drivers: cassandra [ca, cass, cql, datastax, scy, scylla] memsql (mysql) [me] moderncsqlite [mq, sq, file, sqlite, sqlite3, modernsqlite] mysql [my, maria, aurora, mariadb, percona] tidb (mysql) [ti] vitess (mysql) [vt] ``` The above shows that `usql` was built with only the `mysql`, `cassandra`, and `moderncsqlite` drivers. The output above reflects information about the drivers available to `usql`, specifically the internal driver name, its primary URL scheme, the driver's available scheme aliases (shown in `[...]`), and the real/underlying driver (shown in `(...)`) for wire compatible drivers. ### Supported Database Schemes and Aliases The following are the [Go SQL drivers][go-sql] that `usql` supports, the associated database, scheme / build tag, and scheme aliases: <!-- DRIVER DETAILS START --> | Database | Scheme / Tag | Scheme Aliases | Driver Package / Notes | | -------------------- | --------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------- | | Presto | `presto` | `pr`, `prestodb` | [github.com/xo/dbimp/trino][d-presto] | | PostgreSQL | `postgres` | `pg`, `pgsql`, `postgresql` | [github.com/jackc/pgx/v5/stdlib][d-postgres] | | Trino | `trino` | `tr` | [github.com/xo/dbimp/trino][d-trino] | | PostgreSQL PGX | `pgx` | `px` | [github.com/jackc/pgx/v5/stdlib][d-pgx] | | MySQL | `mysql` | `my`, `maria`, `aurora`, `mariadb`, `percona` | [github.com/go-sql-driver/mysql][d-mysql] | | Microsoft SQL Server | `sqlserver` | `ms`, `mssql`, `azuresql` | [github.com/microsoft/go-mssqldb][d-sqlserver] | | Oracle Database | `oracle` | `or`, `ora`, `oci`, `oci8`, `odpi`, `odpi-c` | [github.com/sijms/go-ora/v3][d-oracle] | | SQLite3 | `sqlite3` | `sq`, `sqlite`, `file` | [github.com/mattn/go-sqlite3][d-sqlite3] <sup>[†][f-cgo]</sup> <sup>[§][f-embedded]</sup> | | DuckDB | `duckdb` | `dk`, `ddb`, `duck`, `file` | [github.com/duckdb/duckdb-go/v2][d-duckdb] <sup>[†][f-cgo]</sup> <sup>[§][f-embedded]</sup> | | ClickHouse | `clickhouse` | `ch` | [github.com/xo/dbimp/clickhouse][d-clickhouse] | | CockroachDB | `cockroachdb` | `cr`, `cdb`, `crdb`, `cockroach` | [github.com/jackc/pgx/v5/stdlib][d-cockroachdb] | | CrateDB | `cratedb` | `ct`, `crate` | [github.com/jackc/pgx/v5/stdlib][d-cratedb] | | Amazon Redshift | `redshift` | `rs` | [github.com/jackc/pgx/v5/stdlib][d-redshift] <sup>[¶][f-hosted]</sup> | | SingleStore MemSQL | `memsql` | `me` | [github.com/go-sql-driver/mysql][d-memsql] | | TiDB | `tidb` | `ti` | [github.com/go-sql-driver/mysql][d-tidb] | | Vitess Database | `vitess` | `vt` | [github.com/go-sql-driver/mysql][d-vitess] | | | | | | | Alibaba MaxCompute | `maxcompute` | `mc` | [github.com/aliyun/aliyun-odps-go-sdk/sqldriver][d-maxcompute] <sup>[¶][f-hosted]</sup> | | Alibaba Tablestore | `ots` | `ot`, `tablestore` | [github.com/aliyun/aliyun-tablestore-go-sql-driver][d-ots] <sup>[¶][f-hosted]</sup> | | Amazon Athena | `athena` | `s3`, `aws`, `awsathena` | [github.com/xo/dbimp/athena][d-athena] <sup>[¶][f-hosted]</sup> | | Apache Avatica | `avatica` | `av`, `phoenix` | [github.com/xo/dbimp/avatica][d-avatica] | | Apache Drill | `drill` | `dl` | [github.com/xo/dbimp/drill][d-drill] | | Apache Druid | `druid` | `dr` | [github.com/xo/dbimp/druid][d-druid] | | Apache Hive | `hive` | `hi`, `hive2` | [github.com/beltran/gohive/v2][d-hive] | | Apache Impala | `impala` | `im` | [github.com/sclgo/impala-go][d-impala] | | Apache Pinot | `pinot` | `pi` | [github.com/xo/dbimp/pinot][d-pinot] | | Apache Solr | `solr` | `so` | [github.com/xo/dbimp/solr][d-solr] | | ArangoDB | `arangodb` | `ar`, `arango` | [github.com/xo/dbimp/arangodb][d-arangodb] | | Azure Cosmos DB | `cosmos` | `cm` | [github.com/xo/dbimp/cosmos][d-cosmos] <sup>[¶][f-hosted]</sup> | | Cassandra | `cassandra` | `ca`, `cql`, `scy`, `cass`, `scylla`, `datastax` | [github.com/xo/cassandra][d-cassandra] | | ChaiSQL | `chai` | `ci`, `genji`, `chaisql` | [github.com/chaisql/chai][d-chai] <sup>[§][f-embedded]</sup> | | Couchbase | `couchbase` | `n1`, `n1ql` | [github.com/xo/dbimp/couchbase][d-couchbase] | | CSVQ | `csvq` | `cs`, `csv`, `tsv`, `json` | [github.com/mithrandie/csvq-driver][d-csvq] <sup>[§][f-embedded]</sup> | | Databend | `databend` | `dd`, `bend` | [github.com/xo/dbimp/databend][d-databend] | | Databricks | `databricks` | `br`, `brick`, `bricks`, `databrick` | [github.com/xo/dbimp/databricks][d-databricks] <sup>[¶][f-hosted]</sup> | | DynamoDB | `dynamodb` | `dy`, `dyn`, `dynamo` | [github.com/xo/dbimp/dynamodb][d-dynamodb] | | Elasticsearch | `elasticsearch` | `es`, `elastic` | [github.com/xo/dbimp/elasticsearch][d-elasticsearch] | | Exasol | `exasol` | `ex`, `exa` | [github.com/xo/dbimp/exasol][d-exasol] | | Firebird | `firebird` | `fb`, `firebirdsql` | [github.com/nakagami/firebirdsql][d-firebird] | | FlightSQL | `flightsql` | `fl`, `flight` | [github.com/apache/arrow-go/v18/arrow/flight/flightsql/driver][d-flightsql] | | Google BigQuery | `bigquery` | `bq` | [github.com/xo/dbimp/bigquery][d-bigquery] <sup>[¶][f-hosted]</sup> | | Google Spanner | `spanner` | `sp` | [github.com/xo/dbimp/spanner][d-spanner] <sup>[¶][f-hosted]</sup> | | InfluxDB | `influxdb` | `in`, `influx` | [github.com/xo/dbimp/influxdb][d-influxdb] | | InfluxDB InfluxQL | `influxql` | `iq` | [github.com/xo/dbimp/influxdb][d-influxql] | | libSQL | `libsql` | `ls`, `turso` | [github.com/xo/dbimp/libsql][d-libsql] | | ModernC SQLite3 | `moderncsqlite` | `mq`, `modernsqlite` | [modernc.org/sqlite][d-moderncsqlite] <sup>[§][f-embedded]</sup> | | Neo4j | `neo4j` | `nj`, `neo`, `n4j` | [github.com/xo/dbimp/neo4j][d-neo4j] | | ODBC | `odbc` | `od` | [github.com/xo/odbc][d-odbc] | | OpenSearch | `opensearch` | `os`, `open` | [github.com/xo/dbimp/opensearch][d-opensearch] | | PostgreSQL lib/pq | `libpq` | `pq` | [github.com/lib/pq][d-libpq] | | QuestDB | `questdb` | `qs` | [github.com/jackc/pgx/v5/stdlib][d-questdb] | | rqlite | `rqlite` | `rq` | [github.com/xo/dbimp/rqlite][d-rqlite] | | SAP HANA | `saphana` | `sa`, `sap`, `hana`, `hdb` | [github.com/SAP/go-hdb/driver][d-saphana] | | Snowflake | `snowflake` | `sf` | [github.com/xo/dbimp/snowflake][d-snowflake] <sup>[¶][f-hosted]</sup> | | SurrealDB | `surrealdb` | `sr`, `sur`, `surreal` | [github.com/xo/dbimp/surrealdb][d-surrealdb] | | Vertica | `vertica` | `ve` | [github.com/vertica/vertica-sql-go][d-vertica] | | VoltDB | `voltdb` | `vo`, `vdb`, `volt` | [github.com/VoltDB/voltdb-client-go/voltdbclient][d-voltdb] | | YDB | `ydb` | `yd` | [github.com/ydb-platform/ydb-go-sdk/v3][d-ydb] | | | | | |
Frequently Asked Questions
What is usql?
usql is a Utilities library for the Go programming language. usql is a universal command-line interface for SQL databases
How many GitHub stars does usql have?
usql has 10,142 GitHub stars in the directory's latest synchronization.
How do I install usql?
Install usql with the Go module system using `go get knq/usql`. Check the repository for the current installation instructions.
What category does usql belong to?
usql is listed under Utilities, specifically Utilities.