oracle 查询数据的结果集导出

1.需求说明
查询特定表(含条件),并把其结果集(一千多万的数据)进行导出。

2.使用技术就是spool,代码如下:

spool /user/result.txt
   select phone from t_mt where state_true='0';
  spool off

其中/user/result.txt 为结果集的输出文件。

3.因为需求要循环查询,就创建.sh文件,以test.sh为例,执行:vi test.sh
复制下列代码到test.sh中。

#!/bin/sh
export ORACLE_BASE=/user/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=qxt
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
#oracle字符集
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

#----脚本链接数据库----------------------
#数据库地址
db_ip=127.0.0.1
db_port=1521
db_sid=qxt
db_username=user01
db_password=121212
db_oracle_name="${db_username}/${db_password}@${db_ip}:${db_port}/${db_sid}"

# 日志输出路径
logOutPath=/user/mt_data/mt.log
# 开始时间
mydate="20200701"
echo 'mydate:'$mydate
for((j=0; j<31; j++))
do
  # 日期加一天
  DATE=$(date -d "$j days ${mydate}"  +%Y%m%d)
  echo $(date "+%Y-%m-%d %H:%M:%S")" start date:"$DATE >> ${logOutPath}
loc2=`sqlplus -s ${db_oracle_name} << !
  set pages 0 feed off heading off feedback off verify off linesize 1000 trimspool on term off
  spool /user/mt_data/t_mt_phone_${DATE}.txt
   select phone from t_mt_${DATE} where state_true='0';
  spool off
  exit;
exit
!`
echo $(date "+%Y-%m-%d %H:%M:%S")"  end date:"$DATE >> ${logOutPath}
done


echo $(date "+%Y-%m-%d %H:%M:%S")" 完成 "

说明:
db_ip:oracle数据库的ip
db_port:oracle数据库的端口号
db_sid:oracle数据库sid
db_username:oracle数据库的账号
db_password:oracle数据库的密码

spool常用的设置:
set head off:输出域标题,缺省为on
set linesize 20000:linesize可以设置的大点,防止一行长度不够
set echo off:显示sqlplus中的每个sql命令本身,缺省为on
set feedback off:回显本次sql命令处理的记录条数,缺省为on
set pagesize 0:输出每页行数,缺省为24,为了避免分页,可设定为0
set termout off:显示脚本中的命令的执行结果,缺省为on
set trimout on:去除标准输出每行的拖尾空格,缺省为off
set trimspool on:去除重定向(spool)输出每行的拖尾空格,缺省为off

4.授权执行:chmod +x test.sh

5.执行 : test.sh文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雄哥007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值