Oracle SQLcl - 替代 sqlplus 的利器
Posted sunansheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle SQLcl - 替代 sqlplus 的利器相关的知识,希望对你有一定的参考价值。
引言
对于从事 Oracle 技术开发的同学,肯定都要连接 Oracle 数据库,而 Oracle 自带的 sqlplus 命令行工具功能太弱了,不支持命令联想、数据显示不美观,还要安装什么 Oracle Client,导致很多同学不得不用其他工具(PL/SQL Developer、Oracle SQL Developer)来连接数据库。但 PL/SQL Developer 仅支持 Windows 平台,Oracle SQL Developer 虽然是跨平台的,但显得又太重了。
有没有更好的命令行工具呢?其实 Oracle 早就提供了另一个用来替代 sqlplus 的命令行工具,它就是今天的主角SQLcl
。
安装 SQLcl
准备工作
确保你的机器上安装了 Java 8 或以上版本(JRE 或 JDK 均可),下载地址在这里。
下载 SQLcl 安装包
SQLcl 的安装相当简单,首先去 Oracle 网站 下载 SQLcl 的安装包,截止到该文写作时为止,最新的 SQLcl 版本是 18.1.1(2018年4月12日发布的)。
配置 SQLcl
下载到本地以后是个 zip 压缩包,解压缩后进入 sqlcl/bin
,里面的sql
是给 Mac 或 Linux 平台准备的,而sql.exe
是给 Windows 平台准备的。
钢哥注:由于我用的是 Mac,每次只要进到这个目录,再执行
./sql
即可启动 SQLcl 了。做得更干脆一点儿,由于我的 SQLcl 目录是/Users/kwang/sqlcl/bin
,所以只要把这个目录添加到~/.bash_profile
文件的PATH
变量里即可,这样以后只要在命令行里输入sql
,就自动启动SQLcl
了。
以下是我的~/.bash_profile 文件内容
1
| export PATH=/Users/kwang/sqlcl/bin:$PATH
|
想要立刻生效,别忘了source ~/.bash_profile
。
SQLcl 实战
让我们来看看 SQLcl 到底跟 sqlplus 有什么区别?
数据库连接
1
| sql sys/welcome@localhost:1521:orcl as sysdba
|
清除屏幕
使用clear screen
命令,整个世界清静了。
钢哥注:命令不需要曲敲全,
SQLcl
会自动智能提示/补全的,这一点比 sqlplus 好太多了。
help - 帮助命令
show pdbs - 显示命令
由于我用的是 Oracle Database 12c,可以用如下命令显示目前数据库中已有的 Plugin DB:
1
| show pdbs
|
alter session - 切换会话
切换当前 session 到特定的 Plugin DB:
1
| alter session set container=orclpdb1;
|
执行 sql 脚本
执行 sql 脚本,跟 sqlplus 一样用 @
即可,运行以下命令,创建emp
和dept
表及插入演示数据。
1
| @https://raw.githubusercontent.com/OraOpenSource/OXAR/master/oracle/emp_dept.sql
|
ddl - 生成对象定义语句
假如我们想快速生成emp
这张表的定义语句,可以用如下命令:
1
| ddl emp
|
键盘左键 - 编辑已输入的命令
使用过 sqlplus 的同学都知道,如果一个 sql 命令很长,需要分多行输入,这都没问题。但有时候再输入了很多行以后,突然想改一下之前输入的命令,这就尴尬了,你会发现根本没办法修改,只能大侠重新来过,WTF。。。
有了SQLcl
就不存在这个问题了,它允许你用键盘左键进入快速编辑模式,然后就可以愉快地修改已经输入的命令了。
键盘 tab 键 - 智能提示/补全
如果在快速编辑模式下,输入表字段名的前几个字母,SQLcl
会自动提示/补全剩余的字符,比sqlplus
人性化多了。
键盘上下键 - 快速切换已输入的命令
这个没什么好说的。
sqlformat - 格式化 SQL 执行结果
默认样式下执行select * from emp
,显示结果如下图所示:
执行show sqlformat
可以看到当前格式化样式为:default
set sqlformat ansiconsole
让我们修改下显示结果的样式:
1
| set sqlformat ansiconsole
|
set sqlformat csv - 输出成CSV格式
1
| set sqlformat csv
|
set sqlformat - 恢复默认样式
1
| set sqlformat
|
set head off - 清除 SQL 输出结果头信息行
1
| set head off
|
history - 访问历史记录
想要再次输入某个历史命令,只需要在history
命令后面加上对应的编号,然后再敲/
执行即可。
1
| history 15
|
结语
以上就是关于 Oracle SQLcl 简单的介绍和命令,用来替代 sqlplus 绝对绰绰有余了,希望对喜欢命令行操作的同学有所帮助,谢谢关注!
原始链接:https://wangfanggang.com/Oracle/sqlcl/
以上是关于Oracle SQLcl - 替代 sqlplus 的利器的主要内容,如果未能解决你的问题,请参考以下文章
Oracle导出数据中的prompt,set feedback 等是什么意思
SQLCL - 引用文件中存在 SQL 错误时出现意外 Java 异常