`

转:sqlplus非交互使用

阅读更多

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的账户信息,相对也安全。

分享到:
评论

相关推荐

    java做的Sqlplus

    一个java写的sqlplus,功能已经很完善,欢迎大家使用,有什么不好的地方请告诉我。

    SQLPLUS命令使用大全

    SQLPLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。

    sqlplus命令的使用大全收藏

    Oracle的sql*plus是与oracle进行交互的客户端工具。在sqlplus中,可以运行sqlplus命令与sqlplus语句。

    SQLPLUS命令.rar

    SQLPLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。

    Oracle基础:通过sqlplus执行sql语句后的结果进行判断

    在sqlplus中执行sql语句,如果直接使用命令行的方式调用时会碰到两个问题: 问题1: 需要进行交互性的输入 问题2:结果的判断不能通过返回值来确认 解决方式 在脚本调用里,解决方式如下 问题1可以通过前文提到的...

    SQLPLUS命令的使用大全

    两天写几个oracle日常维护的常用脚本,N多sqlplus命令看不明白,这个“SQL*PLUS命令的使用大全”帮了不少忙。 -------------------------------------------------------------------------------------------------...

    SQLPLUS配置和使用

    该文档主要是整理结合了 SQL Plus的使用和安装,对比了SQL命令和SQL*Plus 命令的相似和不同,对 SQL Plus的格式化输出用脚本文件来进行交互

    sqlplus登录\连接命令、sqlplus命令的使用大全

    Oracle的sql*plus是与oracle进行交互的客户端工具。在sqlplus中,可以运行sqlplus命令与sqlplus语句

    SQLPlus命令使用指南.doc

    熟悉oracle的朋友都知道,SQL PLUS是一个重要的和ORACLE打交道的工具。SQL PLUS本身有很多命令,可以帮助我们做很多事情,包括产生一些规格化的报表、提供人机交互等等。下面,我就简单地说明一下,供大家参考

    SQLPLUS简介与命令集

    Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。

    SQLplus命令大全

    Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。

    instantclient-sqlplus-win-ia64-10.2.0.3.0.zip

    Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql语句。 我们通常所说的DML、DDL、DCL语句都是sql语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,...

    oracle 中 sqlplus命令大全

    Oracle的sql*plus是与oracle进行交互的客户端工具。在sqlplus中,可以运行sqlplus命令与sqlplus语句,我们通常所说的DML、DDL、DCL语句都是sqlplus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域...

    sqlplus命令大全

    对于sqlplus命令大全希望有帮助 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。

    instantclient-sqlplus-windows.x64-21.13.0.0.0dbru.zip

    oracle 21.13.0.0 sqlplus oracle数据库连接工具,cmd交互查询工具。

    SqlPlusConfig:扩展Oracle SQLPlus可用性的环境-开源

    SqlPlusConfig在交互模式下增强了Oracle SQLPlus的可用性。 特点:简化与数据库的连接,连接后配置会话参数,方便的命令历史记录和自动补全,自动调整数据输出的列宽。 需要Oracle SQLPlus和相同的Cygwin软件包。

    Oracle数据库实验操作

    实验4:使用sqlplus,进入sqlplus并进行简单的操作 11 实验5:查看当前用户的所有表和视图 13 实验6:关于null值的问题 15 实验7:在列上起一个别名 15 实验8:在显示的时候去掉重复的行 16 实验9:显示表的部分行和...

    sqlplus常用命令

    3.1 SQL*Plus概述 3.2 SQL*Plus常用命令 启动和关闭数据库命令 帮助命令 连接命令 文件操作命令 交互命令 编辑命令 报表命令 启动和关闭数据库命令

Global site tag (gtag.js) - Google Analytics