使用 usql 连接各种不同的数据库
usql 介绍
usql 是一个统一的数据库连接工具, 目前支持常用的各种数据库, 包括 PostgreSQL, MySQL, Oracle, SQLite3, Microsoft SQL Server 以及最近几年出现的较新的数据库, 比如 clickhouse, Cassandra 等, 详见 database-support.
通常情况下 usql 以 usql [options] DSN
的方式进行连接, 不过 usql 并没有对各个数据的 DSN 进行过多的处理, 大部分情况下只是将其值直接传递到后端的数据库 driver, 所以 usql 的 DSN 格式依据不同的数据库会有不同的选项参数. 下面通过示例说明如何使用 usql 连接 MySQL, SQL Server, sqlite3, cassandra 以及 clickhouse.
连接 mysql
DSN 参数依据 go-sql-driver
# usql --password 'mysql://10.0.12.3:3302/log_data?charset=utf8'
Enter password:
Connected with driver mysql (5.6.31-77.0-log)
Type "help" for help.
my:root@10.0.12.3:3302/log_data=> select id, user_id, create_at from logs_32 limit 5;
id | user_id | create_at
+----+-------------+---------------------------+
1 | 383645 | 2017-06-19T15:53:41+08:00
2 | 383645 | 2017-06-19T15:55:47+08:00
3 | 383645 | 2017-06-19T15:56:04+08:00
4 | 11137862735 | 2017-06-21T01:21:48+08:00
5 | 5277525 | 2017-06-22T16:27:15+08:00
(5 rows)
连接 sql server
DSN 参数依据 go-mssqldb, 未开启加密选项的情况下, 需要关闭 encrypt 选项, 详见: issue-399:
# usql --password 'mssql://test@10.0.12.2:1433/testdb?encrypt=disable&charset=gbk'
Enter password:
Connected with driver mssql (Microsoft SQL Server 9.00.5000.00, SP4, Enterprise Edition)
Type "help" for help.
ms:test@10.0.12.2:1433/testdb=> select top 5 id, account from user where id > 100000;
id | account
+--------+--------------+
100001 | opqaz3k87387
100002 | slpolkly0406
100003 | opgak101022
100004 | 9yfkd1973064
100005 | lkksky2010ps
(5 rows)
连接 sqlite
DSN 参数依据 go-sqlite3
# usql 'sqlite:/home/cz/sqlite/sqlitedbfile'
Connected with driver sqlite3 (SQLite3 3.23.1)
Type "help" for help.
sq:/home/cz/sqlite/sqlitedbfile=> select * from user;
id | name
+----+-------+
1 | test1
2 | test2
(2 rows)
连接 Cassandra
DSN 参数依据 go-cql-driver
# usql ca://127.0.0.1:9042/
Connected with driver cql (Cassandra 3.11.2, CQL 3.4.4, Protocol v4)
Type "help" for help.
ca:127.0.0.1:9042=> select cql_version from system.local;
cql_version
+-------------+
3.4.4
(1 rows)
连接 clickhouse
DSN 参数依据 clickhouse
# usql --no-password 'ch://127.0.0.1:9000/?database=metrics&charset=utf8'
Connected with driver clickhouse (1.1.54370)
Type "help" for help.
ch:127.0.0.1:9000=> show tables;
name
+--------+
nginx
nginx2
(2 rows)
ch:127.0.0.1:9000=> select count(*) as num from nginx;
num
+-----------+
308867936
(1 rows)
说明
在使用的过程中, usql 提供了很大的方便, 尤其是需要连接 sql server
的情况下. 另外在出现连接错误的情况下, 大多数问题需要在各自对应的数据库 driver 中查找相关的问题. 目前来看支持的数据库有很多, 在安装 usql 的时候可以根据 --tag
选项仅编译指定的数据库 driver. 当然后续也可能支持更多的数据库. 另外同类的工具还有 adminer, 通过简单的 web 页面即可访问 MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Firebird, SimpleDB, Elasticsearch and MongoDB.