`

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

分享到:
评论

相关推荐

    sqlplus安装包附带使用说明

    1. **SQLPlus的介绍**:SQLPlus是一个轻量级的数据库管理工具,它允许用户通过命令行界面与Oracle数据库进行交互。用户可以编写SQL查询、DML语句(INSERT、UPDATE、DELETE)、DDL语句(CREATE、ALTER、DROP)以及PL/...

    SQLPLUS 手册

    SQLPLUS是一款基于命令行的交互式查询和管理工具,提供了对SQL语句的直接执行、脚本运行、数据导出等功能,是数据库管理的基础工具之一。 在SQLPLUS中,用户可以执行以下主要操作: 1. **连接数据库**:使用`...

    SQLPlus Usage Guide

    SQLPlus是Oracle数据库管理系统中的一款强大工具,它允许用户直接与数据库交互,执行SQL查询,管理数据库对象,以及自动化各种数据库任务。这篇指南将深入探讨SQLPlus的功能及其在Oracle环境中的应用。 ### SQLPlus...

    SQLPLUS使用手册

    SQLPLUS是Oracle公司提供的一个命令行接口,用于与Oracle数据库进行交互,它是数据库管理员和开发人员的得力助手。这份手册将帮助你深入理解和高效使用SQLPLUS。 SQLPLUS的使用主要涉及以下几个方面: 1. **连接...

    sqlplus11.2 rpm安装包

    1. **SQLPlus**: SQLPlus是Oracle数据库管理员和开发人员常用的接口,它允许用户直接通过命令行与Oracle数据库进行交互。用户可以编写SQL查询、DML(数据操纵语言)语句、DDL(数据定义语言)语句以及PL/SQL程序块。...

    sqlplus 批处理

    SQLPLUS是Oracle公司提供的一个交互式查询和脚本执行工具,可以直接连接到Oracle数据库并执行SQL语句、PL/SQL块,还可以创建和运行批处理脚本。它的功能强大且灵活,适用于各种数据库管理和维护工作。 2. 批处理的...

    SQLPlus使用教程

    4. 自定义格式化:使用`COL`命令自定义列的显示格式。 通过深入学习和实践,你可以充分利用SQLPlus的强大功能,无论是日常的数据库管理还是复杂的脚本编写,SQLPlus都是一个不可或缺的工具。记得结合实际的数据库...

    Oracle中SQLPLUS的常用指令技巧

    Oracle SQLPLUS 是一款强大的命令行工具,用于与Oracle数据库交互,执行SQL查询和管理数据库。以下是一些关于SQLPLUS常用指令的详细解说: 1. **连接数据库**: 使用`connect`命令登录到Oracle数据库,格式如下: ...

    SQLPLUS命令的使用大全.txt

    本篇文章将深入探讨SQLPLUS命令的使用大全,帮助你更好地理解和操作Oracle数据库。 1. **启动SQLPLUS** 要启动SQLPLUS,你需要在命令行界面输入`sqlplus [用户名/密码@连接标识符]`。例如,如果你的用户名是`scott...

    sqlplus用户登录

    2. **非交互式登录方式**: - **命令**: `C:>sqlplus /nolog` - **说明**: 这种登录方式不会自动连接到数据库,用户需要手动输入`SQL> conn / as sysdba`或`SQL> conn sys/password as sysdba`来进行连接。 - **...

    SQLPLUS命令的使用大全

    《SQLPLUS命令的使用大全:深入解析与应用》 在数据库管理领域,SQLPLUS作为Oracle数据库的命令行工具,提供了丰富的功能,使数据库管理员(DBA)和开发人员能够高效地执行SQL语句、PL/SQL代码块以及进行数据管理操作...

    sqlplus中文教程

    - 数据泵导出导入:使用SQLPlus可以配合`EXPDP`和`IMPDP`命令进行数据的导出和导入操作。 - 系统管理和维护:可以执行数据库备份、恢复、权限管理等任务。 - 报表生成:通过脚本和输出格式控制,SQLPlus可以生成...

    SQLPLUS在Bash_shell的使用

    **Bash Shell中的SQLPLUS交互** 在Bash Shell脚本中,我们可以利用SQLPLUS的这些特性来执行一系列数据库操作。例如,创建一个Shell脚本,其中包含SQLPLUS命令行,可以实现数据备份、查询、更新等任务。使用`system...

    sqlplus教程(中文)

    SQLPlus是Oracle公司提供的一款强大的命令行工具,用于与Oracle数据库进行交互。它不仅支持基本的SQL查询,还可以执行复杂的数据库管理和开发任务。本教程旨在详细介绍SQLPlus的使用方法以及SQL语言在Oracle环境中的...

    SqlPlus 命令大全

    SqlPlus 是 Oracle 的一个客户端工具,用于与 Oracle 数据库进行交互。在 SqlPlus 中,可以运行 SqlPlus 命令与 SqlPlus 语句。 SqlPlus 语句包括 DML、DDL、DCL 语句等,它们执行完后,都可以保存在一个被称为 Sql ...

    java做的Sqlplus

    标题中的“java做的Sqlplus”指的是一个用Java编程语言实现的SQL客户端工具,它模仿了Oracle公司的经典数据库管理工具——Sqlplus。Sqlplus是Oracle数据库管理员和开发人员常用的命令行工具,用于执行SQL语句、PL/...

    Sqlplus_登录数据库

    Sqlplus 是 Oracle 数据库管理系统中的一种命令行工具,用于与 Oracle 数据库进行交互。Sqlplus 登录数据库是指使用 Sqlplus 工具连接到 Oracle 数据库的过程。在这个过程中,用户需要输入用户名和密码,以便验证...

    使用SQLPlus.rar

    SQLPlus是一款由Oracle公司开发的命令行工具,用于与Oracle数据库进行交互。它提供了一个简单且功能强大的环境,用户可以通过命令行输入SQL语句来执行各种数据库操作,如查询、插入、更新和删除数据,以及管理数据库...

Global site tag (gtag.js) - Google Analytics