设想
- 跨平台。充分利用golang的跨平台性
- 支持尽可能多的数据库。例如:mssql、mysql、postgresql、sqlite3、db2、oracle…
- 支持语句提示、自动补齐、语法高亮
- 支持历史命令查询
- 支持自动执行命令脚本
- 命令行工具(命令行也可以有简单的UI)
先就想到这里。
现实
网上找了一番,看到有这样一个开源,也正是golang的,去学习学习https://github.com/xo/usql
网友文章 –> USQL:支持SQL/NoSQL数据库的通用命令行工具
go get -u -tags all github.com/xo/usql 安装所有的数据库驱动,看起来支持不少的数据库
usql postgres://booktest@localhost/booktest 连接postgresql
usql oracle://user:pass@host/oracle.sid 连接oracle
usql pg://localhost/ -f script.sql 连接postgres
usql sqlite:/media/ease/bak/app.db 连接到sqlite数据库
数据库连接字符串
driver+transport://user:pass@host/dbname?opt1=a&opt2=b
组件 | 功能 |
---|---|
driver | 驱动或别名 |
transport | tcp, udp, unix 或者驱动器名 (用于 ODBC 和 ADODB) |
user | 用户名 |
pass | 密码 |
host | 主机名 |
dbname* | 数据库名, 实例 , 或者是服务名/ID |
?opt1=a&… | 其他数据库驱动程序选项(有关可用选项,请参阅相应的SQL驱动程序) |
/path/to/file | 硬盘上的路径 |
驱动别名
pg:postgres
my:mysql
ms:mssql
or:oracle
sq:sqlite3
#连接到 postgres 数据库
$ usql pg://user:pass@host/dbname
$ usql pgsql://user:pass@host/dbname
$ usql postgres://user:pass@host:port/dbname
$ usql pg://
$ usql /var/run/postgresql
$ usql pg://user:pass@host/dbname?sslmode=disable # Connect without SSL
#连接到 mysql 数据库
$ usql my://user:pass@host/dbname
$ usql mysql://user:pass@host:port/dbname
$ usql my://
$ usql /var/run/mysqld/mysqld.sock
#连接到 mssql (Microsoft SQL) 数据库
$ usql ms://user:pass@host/dbname
$ usql ms://user:pass@host/instancename/dbname
$ usql mssql://user:pass@host:port/dbname
$ usql ms://
# 连接到 mssql (Microsoft SQL) 数据库, 使用Windows域身份验证
$ runas /user:ACME\wiley /netonly "usql mssql://host/dbname/"
# 连接到 oracle 数据库
$ usql or://user:pass@host/sid
$ usql oracle://user:pass@host:port/sid
$ usql or://
# 连接到 cassandra 数据库
$ usql ca://user:pass@host/keyspace
$ usql cassandra://host/keyspace
$ usql cql://host/
$ usql ca://
# 连接到 sqlite 数据库,必须已存在于磁盘上
$ usql dbname.sqlite3
#如果文件不存在,地址必须指定完整的驱动器及路径,用于创建一个空的数据库。
$ usql sq://path/to/dbname.sqlite3
$ usql sqlite3://path/to/dbname.sqlite3
$ usql file:/path/to/dbname.sqlite3
# 连接到 adodb ole 源 (只适用于Windows)
$ usql adodb://Microsoft.Jet.OLEDB.4.0/myfile.mdb
$ usql "adodb://Microsoft.ACE.OLEDB.12.0/?Extended+Properties=\"Text;HDR=NO;FMT=Delimited\""
相关知识
sqlite3
usql sq:app.db 打开app.db数据库 select name from sqlite_master; 查看所有表