(原) 设想:一个通用的数据库命令行工具

原创文章,请后转载,并注明出处。

设想

  1. 跨平台。充分利用golang的跨平台性
  2. 支持尽可能多的数据库。例如:mssql、mysql、postgresql、sqlite3、db2、oracle…
  3. 支持语句提示、自动补齐、语法高亮
  4. 支持历史命令查询
  5. 支持自动执行命令脚本
  6. 命令行工具(命令行也可以有简单的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; 查看所有表

相关文章