sqlplus的非交互式使用
1 sqlplus交互界面存在的问题
sqlplus是ORACLE数据库的最重要的官方命令行client软件。是DBA的必备工具,使用它能够完毕差点儿所有的管理任务。然而。sqlplus的交互界面并非很友好,输入命令时不具有历史命令记录功能。默认的输出结果更是不堪入目。
在易用性方面,sqlplus确实比mysqlclient差了不少。
既然sqlplus交互模式存在这么多的不便。那么不如干脆直接使用非交互模式使用它,再借助操作系统提供的shell工具集来协助完毕更复杂的任务。sqlplus本身就是支持非交互式使用的,并且支持的很好,符合一般的Unix设计哲学:从标准输入读取命令。把结果写到标准输出。
2 sqlplus的两种非交互式使用方式
sqlplus在非交互模式下,能够从两个地方为其提供sql命令:一是通过外部文件,而是通过标准输入。
2.1 通过外部命令文件
sqlplus username/password@serverIP/侦听服务名 @命令文件名称
以下举一个样例。
命令文件名称为 1.sql。内容例如以下:
select count(*) from dba_objects;
exit;
- 1
- 2
运行命令为:
sqlplus sys/***@172.16.2.190/xgdb.db001.xigang @1.sql
此时运行完毕会把结果输出。
这样的外部命令文件的方式。须要建立单独的物理文件来存储命令。适合常常使用的大批量管理任务。
2.2 通过标准输入
既然sqlplus从标准输入来读取命令,那么就能够利用管道把命令发送给它。
echo 命令 | sqlplus username/password@serverIP/侦听服务名
这样的方式不须要在命令中包括 exit;,因为sqlplus运行后自己主动退出。以下是个样例:
echo 'select count(*) from dba_objects;' | sqlplus sys/***@172.16.2.190/xgdb.db001.xigang as sysdba
这样运行后结果输出到屏幕。因为sql语句是bash命令的參数。而整个命令行能够通过bash方便的历史记录来反复调用。又能够方便的使用上下箭头来反复使用运行过的sql语句了。
3 利用管道做兴许处理
既然sqlplus把结果输出到了标准输出,那么就能够借助管道,使用sed,awk等文字处理工具来得到想要的输出。
echo -e 'set pagesize 0\nselect table_name,owner from dba_tables;' | sqlplus -S sys/***@172.16.2.190/xgdb.db001.xigang as sysdba | awk '{printf("%-10d%-30s%-20s\n",NR,$1,$2);}'
4 须要注意的地方
使用外部文件时,文件里的命令与交互式使用全然同样,无需操心。
-
使用echo + 管道输入时,要避免 bash 元字符的干扰。一定要把sql命令使用单引號或双引號保护起来。
当sql命令中有单引號时。应选择使用双引號保护。如
echo "insert into t1(name) values('奥巴马');" | sqlplus ...
-
因为$在双引號里也会被当成元字符。所以须要对其进行转义
echo "select * from v\$nls_valid_values where parameter='LANGUAGE';" | sqlplus ...
-
另外,sqlplus不同意把sqlplus指令和sql命令混合在一行使用。
并且sql命令必须以;结尾。这样必须使用echo -e 选项来开启把”\n”解释成换行符。
比如
echo -e 'set pagesize 0\nset linesize 100\nselect * from dba_objects;' | sqlplus ...
5 一个简单的脚本
上述命令行方式尽管能够方便的通过bash的历史记录功能调用运行过的sql语句,可是命令行中除了sql语句还有大量的其它内容,显得繁琐。所以。写一个小脚本(文件名称为sql)会让调用起来很方便,例如以下:
#!/bin/bash -
if [ $# -ne 1 ]
then
echo "Usage: $0 'SQL statement'"
else
SQL="set pagesize 0\nset linesize 300\n$1"
echo -e "$SQL"
echo -e "$SQL" | sqlplus -S sys/***@172.16.2.190/xgdb.db001.xigang as sysdba
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
这样调用起来就像以下一样。
sql 'select * from dba_objects;'
这样显得很干净利落。并且也不会在历史命令中记下ORACLE的账户信息,相对也安全。
相关推荐
1. **SQLPlus的介绍**:SQLPlus是一个轻量级的数据库管理工具,它允许用户通过命令行界面与Oracle数据库进行交互。用户可以编写SQL查询、DML语句(INSERT、UPDATE、DELETE)、DDL语句(CREATE、ALTER、DROP)以及PL/...
SQLPLUS是一款基于命令行的交互式查询和管理工具,提供了对SQL语句的直接执行、脚本运行、数据导出等功能,是数据库管理的基础工具之一。 在SQLPLUS中,用户可以执行以下主要操作: 1. **连接数据库**:使用`...
SQLPlus是Oracle数据库管理系统中的一款强大工具,它允许用户直接与数据库交互,执行SQL查询,管理数据库对象,以及自动化各种数据库任务。这篇指南将深入探讨SQLPlus的功能及其在Oracle环境中的应用。 ### SQLPlus...
SQLPLUS是Oracle公司提供的一个命令行接口,用于与Oracle数据库进行交互,它是数据库管理员和开发人员的得力助手。这份手册将帮助你深入理解和高效使用SQLPLUS。 SQLPLUS的使用主要涉及以下几个方面: 1. **连接...
1. **SQLPlus**: SQLPlus是Oracle数据库管理员和开发人员常用的接口,它允许用户直接通过命令行与Oracle数据库进行交互。用户可以编写SQL查询、DML(数据操纵语言)语句、DDL(数据定义语言)语句以及PL/SQL程序块。...
SQLPLUS是Oracle公司提供的一个交互式查询和脚本执行工具,可以直接连接到Oracle数据库并执行SQL语句、PL/SQL块,还可以创建和运行批处理脚本。它的功能强大且灵活,适用于各种数据库管理和维护工作。 2. 批处理的...
4. 自定义格式化:使用`COL`命令自定义列的显示格式。 通过深入学习和实践,你可以充分利用SQLPlus的强大功能,无论是日常的数据库管理还是复杂的脚本编写,SQLPlus都是一个不可或缺的工具。记得结合实际的数据库...
Oracle SQLPLUS 是一款强大的命令行工具,用于与Oracle数据库交互,执行SQL查询和管理数据库。以下是一些关于SQLPLUS常用指令的详细解说: 1. **连接数据库**: 使用`connect`命令登录到Oracle数据库,格式如下: ...
本篇文章将深入探讨SQLPLUS命令的使用大全,帮助你更好地理解和操作Oracle数据库。 1. **启动SQLPLUS** 要启动SQLPLUS,你需要在命令行界面输入`sqlplus [用户名/密码@连接标识符]`。例如,如果你的用户名是`scott...
2. **非交互式登录方式**: - **命令**: `C:>sqlplus /nolog` - **说明**: 这种登录方式不会自动连接到数据库,用户需要手动输入`SQL> conn / as sysdba`或`SQL> conn sys/password as sysdba`来进行连接。 - **...
《SQLPLUS命令的使用大全:深入解析与应用》 在数据库管理领域,SQLPLUS作为Oracle数据库的命令行工具,提供了丰富的功能,使数据库管理员(DBA)和开发人员能够高效地执行SQL语句、PL/SQL代码块以及进行数据管理操作...
- 数据泵导出导入:使用SQLPlus可以配合`EXPDP`和`IMPDP`命令进行数据的导出和导入操作。 - 系统管理和维护:可以执行数据库备份、恢复、权限管理等任务。 - 报表生成:通过脚本和输出格式控制,SQLPlus可以生成...
**Bash Shell中的SQLPLUS交互** 在Bash Shell脚本中,我们可以利用SQLPLUS的这些特性来执行一系列数据库操作。例如,创建一个Shell脚本,其中包含SQLPLUS命令行,可以实现数据备份、查询、更新等任务。使用`system...
SQLPlus是Oracle公司提供的一款强大的命令行工具,用于与Oracle数据库进行交互。它不仅支持基本的SQL查询,还可以执行复杂的数据库管理和开发任务。本教程旨在详细介绍SQLPlus的使用方法以及SQL语言在Oracle环境中的...
SqlPlus 是 Oracle 的一个客户端工具,用于与 Oracle 数据库进行交互。在 SqlPlus 中,可以运行 SqlPlus 命令与 SqlPlus 语句。 SqlPlus 语句包括 DML、DDL、DCL 语句等,它们执行完后,都可以保存在一个被称为 Sql ...
标题中的“java做的Sqlplus”指的是一个用Java编程语言实现的SQL客户端工具,它模仿了Oracle公司的经典数据库管理工具——Sqlplus。Sqlplus是Oracle数据库管理员和开发人员常用的命令行工具,用于执行SQL语句、PL/...
Sqlplus 是 Oracle 数据库管理系统中的一种命令行工具,用于与 Oracle 数据库进行交互。Sqlplus 登录数据库是指使用 Sqlplus 工具连接到 Oracle 数据库的过程。在这个过程中,用户需要输入用户名和密码,以便验证...
SQLPlus是一款由Oracle公司开发的命令行工具,用于与Oracle数据库进行交互。它提供了一个简单且功能强大的环境,用户可以通过命令行输入SQL语句来执行各种数据库操作,如查询、插入、更新和删除数据,以及管理数据库...