还在用 SQL*Plus 访问 Oracle?试试更强大的 SQLcl
文章目录
一致以来,SQL*Plus 都是 Oracle 数据库的标准命令行工具。不过,现在 Oracle 推出了一个新的命令行接口接口工具:Oracle SQL Developer Command Line(SQLcl)。
SQLcl 是一个基于 Java 的免费工具,定位是 SQLPlus 的继承者。SQLcl 支持交互式或者批量执行 SQL和 PL/SQL,提供了行内编辑、语句补全、命令历史等丰富的功能,同时可以调用 SQLPlus 脚本。
主要特性
- 内置编辑器,在 SQLcl 提示符下交互式编辑多行语句和脚本。
- 命令历史,支持循环存储 100 个历史命令/脚本。
- 命令补全,使用 TAB 键自动补全对象名称或关键字。
- 新增命令,增加了 SQL*Plus 中不支持的 CTAS、DLL、Repeat、ALIAS、SCRIPT、FORMAT 等许多新的命令。
- 客户端脚本,通过 javascript 操作查询结果、创建动态命令、执行会话交互等等。
- SQL*Plus 支持,支持 SQL*Plus 环境设置、命令以及功能。
安装 SQLcl
SQLcl 基于 Java,只需要有 JRE,不需要安装 Oracle 客户端。我们可以登录 Oracle OTN 直接下载 SQLcl 工具。下载完成后解压即可,bin 目录中包含了 Windows 下的可执行文件 sql.exe 和 Unix/Linux 下的命令工具 sql。
连接数据库
SQLcl 连接数据库的方式与 SQL*Plus 类似,支持 EZConnect、TNS、LDAP、TWO_TASK 等,注意提前配置好 Java 环境。以下是 Windows 环境下使用 EZConnect 连接数据库的示例:
C:\Users\tony>java -version java version "1.8.0_211" Java(TM) SE Runtime Environment (build 1.8.0_211-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode) C:\Users\tony>D:\Applications\sqlcl\bin\sql.exe tony/tony@192.168.56.104:1521/orcl SQLcl: 发行版 19.1 Production, 发行日期 星期二 六月 11 10:41:41 2019 版权所有 (c) 1982, 2019, Oracle。保留所有权利。 Last Successful login time: 星期二 6月 11 2019 10:41:42 +08:00 已连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> SELECT user FROM dual; USER -------------------------------------------------------------------------------- TONY
使用介绍
SQLcl 的使用与 SQL*Plus 非常类似,但是增加了许多新的功能,接下来我们简单介绍其中几个主要的特性。
查看帮助
登录之后,使用
HELP命令或者
?查看 SQLcl 提供的命令帮助。
其中高亮的部分是 SQLcl 新增加的命令。然后查看某个具体的命令,例如
CTAS:
SQL> help ctas; CTAS ctas table new_table 使用 DBMS_METADATA 可以提取现有表的 DDL, 然后修改为 create table as select * from
该命令基于已有的表,创建一个生成新表的 DDL 语句,但不执行该语句。
内置编辑器
对于 SQL*Plus 而言,编辑文件或者 SQL 缓存区时需要调用外部的编辑器。SQLcl 为此提供了内置的编辑器,使用
DEFINE _EDITOR进行设置:
SQL> define _EDITOR; DEFINE _EDITOR = "notepad" (CHAR) SQL> define _EDITOR="inline"; SQL> define _EDITOR; DEFINE _EDITOR = "inline" (CHAR)
内置编辑器支持以下快捷方式:
- Ctrl+R - 运行当前缓冲区中的语句
- Ctrl+W - 光标移动到缓冲区顶部
- Ctrl+S - 光标移动到缓冲区底部
- Ctrl+A - 光标移动到行首
- Ctrl+E - 光标移动到行尾
正在编辑的当前行会显示一个星号(*),同时也可以使用箭头控制光标的移动,使用删除键和回退键删除内容。
命令历史
使用 SQL*Plus 时,无法访问已经执行过的历史命令,除非安装 rlwrap。SQLcl 解决了这个问题,查看一下
HISTORY命令的帮助:
SQL> help history; HISTORY --------- history [<index> | FULL | USAGE | SCRIPT | TIME | CLEAR (SESSION)?] SQL>history full 1 select 1 from dual; 2 select 2 > from dual; 3 select 3 from dual > where 1=1; SQL>history usage 1 (2) select 1 from dual; 2 (11) select 2 from dual; 3 (2) select 3 from dual where 1=1; SQL>history script select 1 from dual; select 2 from dual; select 3 from dual where 1=1; SQL>history 3 1 select 3 from dual 2* where 1=1; SQL>his time 1 clear 2 cl bre 3 (00.201) select 1 from dual
命令帮助给出了参数和示例。列出某个历史命令后,输入斜线(/)即可运行该命令。该功能具有以下特点:
- 使用向上和向下箭头依次查看历史命令。
- 使用
HISTORY
命令显示命令历史。 - 默认保存最近 100 个历史语句。
- 使用
SET HISTORY LIMIT N
修改默认保存的历史命令数量限制。 - 命令历史支持跨 SQLcl 会话保存。
- 默认情况下,
SHOW
、HISTORY
、CONNECT
和SET
命令不会保存到历史中。 SET HISTORY BLACKLIST
命令可以用于设置不想要保存的命令黑名单。
命令补全
SQLcl 支持使用 Tab 键补全输入的功能,可以补全对象名称和命令,提高输入的速度。
格式化输出
SQL*Plus 的默认输出格式通常显得比较混乱,需要通过一系列的设置命令才能显得比较人性化。SQLcl 预置了多种常用的输出格式,包括 CSV、JSON、XML 等。
SQL> help set sqlformat; SET SQLFORMAT SET SQLFORMAT { csv,html,xml,json,ansiconsole,insert,loader,fixed,default}
以下分别是默认格式和 CSV 格式的输出示例:
SQL> SELECT * 2 FROM 3 EMPLOYEES 4* WHERE rownum <= 2; EMPLOYEE_ID FIRST_NAME LAST_NAME ----------- -------------------- ------------------------- EMAIL PHONE_NUMBER HIRE_DATE JOB_ID SALARY ------------------------- -------------------- --------- ---------- ---------- COMMISSION_PCT MANAGER_ID DEPARTMENT_ID -------------- ---------- ------------- 207 Tony Dong TonyDong 515.123.8000 15-1月 -10 IT_PROG 8800 102 60 100 Steven King SKING 515.123.4567 17-6月 -03 AD_PRES 24000 90 SQL> set sqlformat csv; SQL> SELECT * 2 FROM 3 EMPLOYEES 4* WHERE rownum <= 2; "EMPLOYEE_ID","FIRST_NAME","LAST_NAME","EMAIL","PHONE_NUMBER","HIRE_DATE","JOB_ID","SALARY","COMMISSION_PCT","MANAGER_ID","DEPARTMENT_ID" 207,"Tony","Dong","TonyDong","515.123.8000",15-1月-10,"IT_PROG",8800,,,102,60 100,"Steven","King","SKING","515.123.4567",17-6月-03,"AD_PRES",24000,,,90
相关链接
- Oracle sqlplus访问数据库
- Linux下sqlplus远程访问Oracle
- Oracle 之 PLSQL、SQL*PLUS、CMD中 访问数据库时,用户登录的输入
- oracle安装后的问题:共享库Libsqlplus.so 无法访问
- Oracle学习笔记:sqlplus使用ip地址访问Oracle服务器
- Linux sqlplus远程访问Oracle
- bat脚本采用sqlplus登录oracle并若登录失败不卡住bat脚本的执行流程
- oracle sqlplus 常用命令大全
- SQL 教程数据库包括:Oracle, Sybase, SQL Server, DB2, Access 等等,您将学到如何使用 SQL 访问和处理数据系统中的数据
- 循序渐进学Oracle之sqlplus命令
- oracle sqlplus命令详解(官方示例)
- 通过sql*plus工具操作ORACLE 常用命令
- Oracle SQL*PLUS基础及sqlplus命令详解-2
- oracle 10g sql*plus常用命令
- oracle sqlplus学习
- Oracle SQLPlus 在连接时通常有四种方式
- oracle sql plus 常用命令
- oracle sqlplus登录缓慢
- oracle sqlplus 常用命令大全
- Oracle 10g for windows 7 的sqlplus登录