Skip to content

mofishless/sql-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SQL Client 使用说明

交互式终端 SQL 客户端,用于在 Linux 服务器上快速查询 Oracle、达梦(DM)和 KingbaseES 数据库。

环境要求

  • JDK 8 或更高版本
  • 支持 Oracle、达梦和 KingbaseES 数据库

快速开始

1. 构建项目

mvn clean package

构建产物位于 target/sql-client-1.0.0.jar(约 7.4MB 的 Fat JAR,包含所有依赖)。

2. 创建配置文件

config-example.yaml 复制为 config.yaml,填入实际的数据库连接信息:

connections:
  - name: prod-oracle
    type: ORACLE
    url: jdbc:oracle:thin:@192.168.1.100:1521:orcl
    username: scott
    password: tiger

  - name: dev-dm
    type: DM
    url: jdbc:dm://192.168.1.200:5236
    username: SYSDBA
    password: SYSDBA

defaultConnection: dev-dm

字段说明:

字段 说明
name 连接名称,用于 \switch 切换时的标识
type 数据库类型,可选值:ORACLEDMKINGBASE8
url JDBC 连接地址
username 数据库用户名
password 数据库密码
defaultConnection 启动时自动连接的默认连接名称(可选,不填则连接第一个)

3. 启动客户端

# 使用配置文件启动
java -jar sql-client.jar -c config.yaml

# 使用命令行参数直连(无需配置文件)
java -jar sql-client.jar -url jdbc:oracle:thin:@host:1521:orcl -user scott -pass tiger
java -jar sql-client.jar -url jdbc:dm://host:5236 -user SYSDBA -pass SYSDBA -type DM
java -jar sql-client.jar -url jdbc:kingbase8://host:54321/db -user SYSTEM -pass password -type KINGBASE8

# 指定配置文件 + 覆盖连接
java -jar sql-client.jar -c config.yaml -url jdbc:dm://another-host:5236 -user admin -pass admin123

命令行参数:

参数 说明
-c <file> 配置文件路径
-url <url> JDBC 连接地址(自动识别数据库类型)
-user <user> 数据库用户名
-pass <pass> 数据库密码
-type <type> 数据库类型:ORACLEDMKINGBASE8(使用 -url 时可省略,自动识别)

交互使用

SQL 查询

输入 SQL 语句,以**分号(;)**结尾执行:

[dev-dm]> SELECT * FROM SYS_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND ROWNUM <= 5;

+--------+-------------+-------------+
| ID     | NAME        | OBJECT_TYPE |
+--------+-------------+-------------+
| 100    | SYS_TABLES  | TABLE       |
| 101    | SYS_VIEWS   | TABLE       |
| 102    | USER_INFO   | TABLE       |
| 103    | ORDER_LOG   | TABLE       |
| 104    | CONFIG_DATA | TABLE       |
+--------+-------------+-------------+
5 row(s) in set (23 ms)

多行输入

SQL 可以跨多行输入,以分号结尾时执行。出现 -> 提示符表示正在输入多行语句:

[dev-dm]> SELECT ID, NAME
  -> FROM USER_INFO
  -> WHERE STATUS = 'ACTIVE'
  -> ORDER BY ID DESC
  -> LIMIT 10;

Ctrl+C 可取消当前正在输入的 SQL。

DML 操作

支持 INSERT、UPDATE、DELETE、CREATE、ALTER、DROP、TRUNCATE 等语句:

[dev-dm]> INSERT INTO TEST_TABLE VALUES (1, 'test');
1 row(s) affected.

[dev-dm]> UPDATE TEST_TABLE SET NAME = 'updated' WHERE ID = 1;
1 row(s) affected.

内置命令

命令 说明
\help 显示帮助信息
\connections 列出所有已配置的数据库连接(* 标记当前连接)
\switch <name> 切换到指定名称的数据库连接
\current 显示当前连接详细信息(状态、Catalog、Schema)
\reconnect 重新连接当前数据库
\quit\exit 退出客户端

使用示例:

[dev-dm]> \connections
 * dev-dm (DM) -> jdbc:dm://192.168.1.200:5236
   prod-oracle (ORACLE) -> jdbc:oracle:thin:@192.168.1.100:1521:orcl

[dev-dm]> \switch prod-oracle
Connecting to prod-oracle...
Connected to prod-oracle (ORACLE) -> jdbc:oracle:thin:@192.168.1.100:1521:orcl successfully.

[prod-oracle]> \current
Current connection: prod-oracle (ORACLE) -> jdbc:oracle:thin:@192.168.1.100:1521:orcl
Status: connected
Catalog: ORCL
Schema: SCOTT

历史记录

客户端自动保存输入历史到 ~/.sqlclient-history,支持:

  • 上/下方向键浏览历史 SQL
  • 跨会话持久化(重启后历史仍在)

结果展示特性

  • 自动对齐 — 列宽根据内容和列名自动计算
  • NULL 处理 — 空值显示为 NULL
  • 超长截断 — 超过 50 字符的字段自动截断,末尾显示 ...
  • 换行合并 — 包含换行的字段内容合并为单行显示
  • 行数统计 — 底部显示返回行数和执行耗时
  • 空结果集 — 无数据时显示 Empty set

JDBC URL 格式参考

Oracle:

# 传统格式
jdbc:oracle:thin:@<host>:<port>:<SID>

# 服务名格式
jdbc:oracle:thin:@//<host>:<port>/<service_name>

# 示例
jdbc:oracle:thin:@192.168.1.100:1521:orcl
jdbc:oracle:thin:@//192.168.1.100:1521/orclpdb

达梦:

jdbc:dm://<host>:<port>

# 指定 schema
jdbc:dm://<host>:<port>?schema=<schema_name>

# 示例
jdbc:dm://192.168.1.200:5236
jdbc:dm://192.168.1.200:5236?schema=TEST_SCHEMA

KingbaseES:

jdbc:kingbase8://<host>:<port>/<database>

# 示例
jdbc:kingbase8://192.168.1.300:54321/mydb

从源码构建

# 克隆项目后执行
mvn clean package

# 运行测试
mvn test

# 仅编译不打包
mvn compile

构建要求:Maven 3.6+、JDK 8+。

注意事项

  1. 配置文件中密码为明文存储,请注意文件权限控制(chmod 600 config.yaml
  2. 单次查询最多返回 500 行,避免大量数据导致终端卡顿
  3. 长时间空闲可能导致数据库连接超时,使用 \reconnect 重新连接
  4. 不支持事务管理,每条 SQL 独立执行并自动提交

About

A lightweight interactive SQL terminal client for Chinese enterprise databases (Oracle, DM, KingbaseES). Features: multi-connection management, command history, auto-formatted table output. Single fat JAR deployment, perfect for server environments.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages