`

在shell脚本执行sql脚本两种方法

 
阅读更多

 有时候,需要在shell脚本中执行sql语句。怎么把这两个毫不相干的东西联系到一起呢??根据经验,这里提供两种方法。如果你有更好的方法,欢迎你提出来给大家分享。下面以select sysdate from dual为例来解决这两种方法。

  
  第一种方式是使用输入重定向的方法,把要执行的sql语句全部放入到重定向的块中。 下面是这种方法的shell脚本:

[oracle@localhost ~]$ cat sql_mode1.sh
#!/bin/ksh

sqlplus sys/oracle@wyln as sysdba 1>sql.log 2>&1 <<EOF!
select sysdate from dual;
exit;
EOF!

cat sql.log

[oracle@localhost ~]$

  我们来看下执行的结果:

[oracle@localhost ~]$ ./sql_mode1.sh

SQL*Plus: Release 11.1.0.6.0 - Production on Tue Dec 22 23:14:25 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>
SYSDATE
---------------
22-DEC-09

SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@localhost ~]$        

  从执行结果来看,使用了sql语句得出了执行的结果为22-DEC-09这个是正确的。

 

  第二种方式,先生成一个sql脚本,在这个sql脚本里面执行连接数据库、sql语句等,然后再退出。下面是该方法的sql脚本:

[oracle@localhost ~]$ cat sql_mode2.sh
#!/bin/ksh

echo "conn sys/oracle@wyln as sysdba
select sysdate from dual;
exit;" > sel.sql

sqlplus /nolog @sel.sql  1>sql.log 2>&1

cat sql.log

[oracle@localhost ~]$                 

  下面来看执行的结果怎么样:

  [oracle@localhost ~]$ ./sql_mode2.sh

S QL*Plus: Release 11.1.0.6.0 - Production on Tue Dec 22 23:28:40 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Connected.

SYSDATE
---------------
22-DEC-09

Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@localhost ~]$                      

  这两种方法都可以实现执行sql语句,根据你的习惯,选择合适你的方法。

   注 意:1、因为这里是在oracle用户执行的,所以在前面没有导入ORACLE_HOME和PATH环境变量,如果要做的通用,需要在前面导入环境变量。 2、执行的最后一条语句一定是“exit;”,否则后果很严重,就是脚本永远退不出来,导致挂死。具体你可以自己测试一下。3、执行的结果需要重定向到日 志文件。sql语句的成功与否,我们没有办法通过返回值来判断。

分享到:
评论

相关推荐

    向shell或者sql脚本传参或接收参数的方法

    在IT领域,尤其是在系统管理和自动化任务执行中,Shell脚本和SQL脚本的使用非常普遍。它们能够有效地处理日常的任务,比如数据处理、系统管理等。这篇文章将详细讲解如何向Shell或SQL脚本传递参数以及如何在脚本中...

    linux下批量执行oracle脚本的shell脚本

    3. **SQL脚本执行**:在`sqlplus`命令后,使用`@`符号跟上SQL脚本的路径,例如`@createTable.sql`,来执行脚本。 4. **错误处理**:通过`if`语句检查SQL脚本的执行结果,捕获可能的错误信息。 5. **日志记录**:为了...

    shell连接oracle数据库执行SQL工具脚本-支持select+inset+update

    dbExecurteSQL.sh:数据库执行SQL脚本 根据配置文件获取数据库连接,根据传入sql执行sql 调用案例:dbConnectTest.sh "pssc_jk" "select sysdate from dual;" 参数介绍: "pssc_jk" 指配置文件中配置的数据库...

    Shell脚本中执行sql语句操作mysql的5种方法

    通过上述介绍,我们可以看到,在Shell脚本中执行SQL语句操作MySQL数据库有多种方法可供选择,每种方法都有其适用的场景。在实际应用过程中,可以根据具体情况灵活选择合适的方法,以达到最佳的效果。同时,也需要...

    shell执行mysql脚本

    在IT行业中,shell脚本和MySQL数据库是两个非常重要的工具。Shell脚本是Linux或Unix系统中的编程语言,用于自动化日常任务,而MySQL则是一种广泛使用的开源关系型数据库管理系统。当我们需要在Linux环境下批量处理...

    Shell脚本批量添加CSV数据到MySQL

    在Unix/Linux环境中,Shell脚本允许我们编写一系列命令来执行自动化任务。这个脚本的目的就是读取`prov.csv`中的数据,并将其插入到MySQL数据库中的相应表中。脚本可能包含如下步骤: 1. 使用`cat`或`head`命令查看...

    面向 dba 的 linux shell 脚本简介

    本文主要面向对Linux脚本不熟悉的DBA,旨在介绍如何利用Bash Shell脚本来实现Oracle数据库在Linux环境下的高效维护。 首先,了解什么是Shell脚本。Shell脚本是一个包含了一系列命令的文本文件,当执行这个文件时,...

    Shell脚本实现监控MySQL主从同步

    在这个文档中,作者详细介绍了如何使用Shell脚本来监控Linux系统下MySQL的主从同步状态,并且通过邮件通知管理员同步错误。以下是根据文档内容总结的关键知识点: 1. **Shell脚本的作用**:Shell脚本能够自动化执行...

    shell脚本卸载数据模板(Oracle)

    脚本只需配置/etl/sql/sql_mb.txt模板中的SQL语句,以及配置/etl/sql/filename.txt文件中对应的文件名称即可将数据卸载到对应文件名称的文本文档中,配置自由。 脚本中包括数据卸载,编码转换(GBK转UTF8),获取...

    Mysql备份可以执行的shell脚本

    在shell脚本中,我们可以使用`mysqldump`命令来实现这两种类型的备份。 **全量备份**: 使用`mysqldump`进行全量备份的基本语法如下: ```bash mysqldump -u [username] -p[password] [database_name] &gt; [backup_...

    shell脚本mysql导出指定表并分表存储

    mysql导出指定表并分表存储sql文件且压缩的shell脚本,数据库数据过大时,可以用于数据库备份

    shell 脚本对数据库定时备份

    首先,Shell脚本是Unix/Linux操作系统中的一种强大的命令行解释器,它允许用户编写自动化任务,例如执行一系列命令、处理文件或系统管理任务。在本场景中,我们将利用Shell脚本来创建一个自动备份数据库的程序。 1....

    shell脚本实现mysql从原表到历史表数据迁移

    这里我们关注的是使用Shell脚本来实现MySQL从原表到历史表的数据迁移。这种自动化的方法可以帮助我们高效、准确地处理大量数据,同时减少人为错误。 首先,让我们深入理解`shell`脚本。Shell是Linux和Unix系统中的...

    自动生成数据shell脚本

    ### 自动生成数据Shell脚本详解 #### 脚本功能概述 本文档将详细解析一个用于自动生成数据的Shell脚本。此脚本主要用于在Oracle数据库中创建并插入指定数量的数据记录到特定表中。通过定义一系列参数,脚本能够自动...

    自动部署达梦数据库shell脚本,达梦8版本

    run.sh 步骤:请把脚本和达梦数据库iso包移动到 /opt下!接下来 source run.sh

    Linux—编写shell脚本操作数据库执行sql

    在本文中,我们将探讨如何在Linux环境中使用Shell脚本来操作数据库执行SQL脚本,特别是在应用程序升级时处理数据库升级的问题。以下是一些关键知识点: 1. **Shell脚本**:Shell脚本是Linux/Unix系统中的一种编程...

    自动下载并保存GFS数据的Shell脚本

    在Linux系统中,Shell脚本可以实现自动化任务,如数据处理、文件管理、系统监控等,是系统管理员和数据科学家常用的一种工具。 “MySQL”是一种广泛使用的开源关系型数据库管理系统,它能够高效地存储和检索大量...

    批量执行SQL脚本工具-PowerShell.7z

    在"批量执行SQL脚本工具-PowerShell.7z"这个压缩包中,包含了适用于Windows 2012和Windows 2016操作系统的PowerShell脚本,旨在帮助用户批量处理SQL Server中的SQL脚本执行。以下是这个工具的主要知识点: 1. **...

Global site tag (gtag.js) - Google Analytics