我是靠谱客的博主 虚心太阳,最近开发中收集的这篇文章主要介绍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文件

最后

以上就是虚心太阳为你收集整理的oracle 查询数据的结果集导出的全部内容,希望文章能够帮你解决oracle 查询数据的结果集导出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部