一个 Go 工具包揽一切 SQL 数据库客户端
今天发现了一个超级棒的工具:通用的 SQL 数据库命令行工具。如果你喜欢通过命令行操作数据库,这个工具绝对值的拥有。为什么?
第一、它跨平台,支持 Windows、Mac 和 Linux 等平台,相应可以通过 Scoop、Homebrew 等安装,或者通过预编译好的二进制安装。如果你有 Go 开发环境,可以通过源码安装。因为这个工具是用 Go 语言实现的。
第二、支持众多 SQL 数据库,比如常见的 PostgreSQL, MySQL, Oracle Database, SQLite3, Microsoft SQL Server。源码安装默认支持它们。如果要支持更多,可以通过 build tags 编译。详细的支持列表如下:
Driver | Build Tag | Driver Used |
---|---|---|
Microsoft SQL Server | mssql | github.com/denisenkom/go-mssqldb |
MySQL | mysql | github.com/go-sql-driver/mysql |
Oracle Database | oracle | github.com/sijms/go-ora |
PostgreSQL | postgres | github.com/lib/pq |
SQLite3 | sqlite3 | github.com/mattn/go-sqlite3 |
MySQL | mymysql | github.com/ziutek/mymysql/godrv |
Oracle Database | godror | github.com/godror/godror |
PostgreSQL | pgx | github.com/jackc/pgx/stdlib |
Alibaba MaxCompute | maxcompute | sqlflow.org/gomaxcompute |
Apache Avatica | avatica | github.com/Boostport/avatica |
Apache H2 | h2 | github.com/jmrobles/h2go |
Apache Hive | hive | sqlflow.org/gohive |
Apache Ignite | ignite | github.com/amsokol/ignite-go-client |
Apache Impala | impala | github.com/bippio/go-impala |
AWS Athena | athena | github.com/uber/athenadriver/go |
Azure Cosmos | cosmos | github.com/btnguyen2k/gocosmos |
Cassandra | cassandra | github.com/MichaelS11/go-cql-driver |
ClickHouse | clickhouse | github.com/kshvakov/clickhouse |
Couchbase | couchbase | github.com/couchbase/go_n1ql |
Cznic QL | ql | modernc.org/ql |
Firebird SQL | firebird | github.com/nakagami/firebirdsql |
Genji | genji | github.com/genjidb/genji/sql/driver |
Google BigQuery | bigquery | gorm.io/driver/bigquery/driver |
Google Spanner | spanner | github.com/rakyll/go-sql-driver-spanner |
Microsoft ADODB | adodb | github.com/mattn/go-adodb |
ModernC SQLite | moderncsqlite | modernc.org/sqlite |
ODBC | odbc | github.com/alexbrainman/odbc |
Presto | presto | github.com/prestodb/presto-go-client/presto |
SAP ASE | tds | github.com/thda/tds |
SAP HANA | hdb | github.com/SAP/go-hdb/driver |
Snowflake | snowflake | github.com/snowflakedb/gosnowflake |
Trino | trino | github.com/trinodb/trino-go-client/trino |
Vertica | vertica | github.com/vertica/vertica-sql-go |
VoltDB | voltdb | github.com/VoltDB/voltdb-client-go/voltdbclient |
MOST DRIVERS | most | all drivers excluding ODBC (requires CGO and additional dependencies) |
ALL DRIVERS | all | all drivers |
实话说,真的不要太强大。
而且,虽然支持这么多数据库,但连接和使用却是类似的。
如何连接数据库
usql 命令接上 DSN 就可以连上对应的数据库了。DSN 的语法如下(三种形式):
driver+transport://user:pass@host/dbname?opt1=a&opt2=b
driver:/path/to/file
/path/to/file
比如连接到 MySQL 数据库的例子:
$ usql my://user:pass@host/dbname
$ usql mysql://user:pass@host:port/dbname
$ usql my://
$ usql /var/run/mysqld/mysqld.sock
链接到 SQLite3:
$ usql dbname.sqlite3
此外,还支持直接使用 usql 进入交互界面,然后通过 \c + dsn 的方式连接。这样可以随时切换数据库。
此外,该工具还支持语法高亮,执行外部 shell 命令等。这么好的工具,赶紧试试吧!
对了,项目地址:https://github.com/xo/usql,Star 数 6.1k+。
文末「阅读原文」可直达项目首页。
推荐阅读
评论