如何在shell中调SQLPLUS 执行SQL语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在shell中调SQLPLUS 执行SQL语句相关的知识,希望对你有一定的参考价值。
参考技术A 1、实例1,获取TABLESPACE_NAME列表#!/bin/sh
. ~/.bash_profile
sqlplus -s 'user/234256' <<EOF
spool v.txt
set linesize 200
col TABLESPACE_NAME format a50
col file_name format a50
select distinct(TABLESPACE_NAME) from dba_data_files order by TABLESPACE_NAME;
spool off
EOF
2、一句
echo -e "drop table test_BAK purge;"|sqlplus -s 'user/123499'
3、执行sql文件实例
#!/bin/bash
. ~/.bash_profile
sqlplus -s 'user/234256' @~/remove_old_data.sql本回答被提问者采纳
如何在 shell 脚本中运行 SQL 查询时获得类似 SQLPLUS 的输出
【中文标题】如何在 shell 脚本中运行 SQL 查询时获得类似 SQLPLUS 的输出【英文标题】:How to get output like SQLPLUS while Running SQL Query in shell script 【发布时间】:2013-08-04 08:17:53 【问题描述】:我有一个如下的 shell 脚本
RETVAL=`sqlplus -silent user/password <<EOF
SET PAGESIZE 9990
SELECT id, type, count(*) "count" FROM event
EXIT;
EOF`
echo $RETVAL
它的输出像
ID 类型计数 ------------- ---------- ----------- 2 11 2 1 4 1 2 10 29 1 1 35 2 1 6 2 18 1 2 2 3 7 行已选择
但我想要像这样的输出
ID TYPE count
------------- ---------- -----------
2 11 2
1 4 1
2 10 29
1 1 35
2 1 6
2 18 1
2 2 3
已选择 7 行。
我试图弄清楚我是否得到了一些换行符,但找不到。
问候,
【问题讨论】:
【参考方案1】:您的变量包含换行符,但您显示它的方式会删除它们。
将echo
语句替换为:
echo "$RETVAL"
这样,shell 就不会弄乱换行符了。您几乎应该总是引用可以包含需要保留的任何形式的空格的变量。
【讨论】:
以上是关于如何在shell中调SQLPLUS 执行SQL语句的主要内容,如果未能解决你的问题,请参考以下文章