文档章节

oracle 数据批量导出工具

一贱书生
 一贱书生
发布于 2016/06/16 20:21
字数 707
阅读 97
收藏 0

#!/bin/ksh
#############################################
#
# 模块: putoutdata.sh
# 作者: XXXXXX
# 描述: 根据一个数据库或表名来卸载数据并生成对应的数据文件
# 文件名为 表名.unl
# 参数 1 = 用户名/密码[@实例名]
# 参数 2 = 表名
# 参数 3 = 查询条件 "省略where"[可选]
# 参数 4 = 文件名前缀且  输出文件名为 前缀_表名.unl[可选]
# 参数 5 = 文件中需要替换的内容
#  有参数5时,必须配合参数4一起使用 参数4 为被替换的内容 参数5 为替换的内容
# 例2.unload user/password rate
#   将 rate 中的全部数据导入文件中,
#     输出文件为 rate .unl
# 例3.unload user/password rate " code='6'"
#   将 rate 中 code= 679的数据导入文件中,
#     输出文件为 rate.unl
# 例4.unload user/password rate " code='6'" 9
#   将 prem_rate 中 code= 6的数据导入文件中,
#     输出文件为 9_rate.unl
# 例5.:unload user/password rate " pol_code='6'" 7 1
#     将 rate 中 code= 6的数据导入文件中,且将 所有6替换为 7
#     输出文件为 1_rate.unl

##########################################

lv_sep="|" # --分隔符,可以修改成自己想要的分隔符,如"|"

##获取记录,拼入unl文件中
f_get_records()
{
    rm -f lv_$table.txt
    SQLS2="select * from $table where 1=1 ${sqlwhere};"
    sqlplus -s ${userid} <<-!!! >/dev/null
        set colsep ${lv_sep};
        set echo off;
        set feedback off;
        set heading off;
        set pagesize 0;
        set linesize 32767;
        set termout off;
        set trimout on;
        set trimspool on;
        spool lv_$table.txt;
        ${SQLS2}
        spool off;
    !!!
    
    
    if [ -f lv_$table.txt ]
    then
    cat lv_$table.txt | grep -v "^SQL>"|sed -e "s/ *$//g"|sed "s/$/|/g"|sed -e "s/ *|/|/g"|sed -e "s/| */|/g" >${newname}${table}.unl
    if [[ `grep "ORA-" ${newname}$table.unl` = "" ]]; then
    echo "unload table ${newname}${table}....\t\t\t\t\t ok"
    else
    cat ${newname}${table}.unl
    err="$err ${newname}${table}"
    fi
    else
    echo $0 error
    fi
    rm -f lv_$table.txt
}

##将拼入unl文件中的特定内容替换为指定的数据
f_fix_records()
{
    if [ -f $table.unl ]
    then
    cat $table.unl | grep ${des} |sed "s/${des}|/${newtext}|/g" >${newtext}_${table}.unl
    if [[ `grep "ORA-" $table.unl` = "" ]]; then
    echo "unload table ${table}....\t\t\t\t\t ok"
    else
    cat ${table}.unl
    err="$err ${table}"
    fi
    else
    echo $0 error
    fi
    rm -f $table.unl
}

## 主程序入口
lv_no=$#

case ${lv_no} in
2)##导出整张表的数据
    userid=$1
    table=$2
    f_get_records;
    ;;
3)##导出条件中的数据
    userid=$1
    table=$2
    sqlwhere=" and $3"
    newname=""
    f_get_records;
;;
4)##导出条件中的数据,并在文件前加前缀
    userid=$1
    table=$2
    sqlwhere=" and $3"
    newname="$4_"
    f_get_records;
    ##将空文件放入一个单独文件夹
    curdir=$pwd
    if [ ! -d "$4" ];
     then
     mkdir $4;
    fi
    for file in `ls $curdir`
    do
            if [ ! -s $file ]
            then
               mv ./$file  ./$4;    
            fi        
    done    
    ;;
5)##导出条件中的数据,将文件中的特定数据替换为指定数据
    userid=$1
    table=$2
    sqlwhere=" and $3"
    des=$4
    newtext=$5
    f_get_records;
    f_fix_records;
    ##将空文件放入一个单独文件夹
    curdir=$pwd
        if [ ! -d "$newtext" ];
        then
            mkdir ${newtext}
        fi
    for file in `ls $curdir`
    do
            if [ ! -s $file ]
            then
               mv ./$file  ./$newtext;    
            fi        
    done
;;
*)
    echo "Usage: $0 "
    exit
    ;;
esac

 

 

#########################################结束操作

if [[ "X$err" = "X" ]];then
echo "Unload Complete!,Thank you!"
else
echo "Unload Table $err error, please check it!"
fi

 

© 著作权归作者所有

共有 人打赏支持
一贱书生
粉丝 19
博文 724
码字总数 600123
作品 0
私信 提问
Oracle数据转移Mysql中遇到的问题以及解决办法

前几天因工作需要我得将Oracle数据库中几十张表转移到Mysql中,由于之前没有相关经验,上网简单百度后选用Navcat Premium软件工作。 Navcat Premium进行数据转移有三种办法:1、复制表 2、导...

littleant2
2015/07/30
0
0
Oracle + Mybatis实现批量插入、更新和删除示例代码

前言 Mybatis是web工程开发中非常常用的数据持久化的框架,通过该框架,我们非常容易的进行数据库的增删改查。数据库连接进行事务提交的时候,需要耗费的资源比较多,如果需要插入更新的数据...

一看就喷亏的小猿
11/22
0
0
数据库管理工具--CoolSQL

CoolSQL是一个数据库客户端管理工具。 支持大部分数据库包括:DB2、oracle、mysql、MS SQL Server、Derby、HSQL、Informix、Sybase、PostgresSQL等。 为用户提供友好和漂亮UI,其整体框架由视...

匿名
2009/07/08
15.2K
1
Oracle开发工具--Oracle SQL Handler

Oracle SQL Handler, 是专为Oracle数据库开发人员及操作人员精心打造的一款Oracle开发工具(客户端工具)。国产原创, 精品奉献, 无序列号限制, 仅凭使用满意度随意赞助就可永久使用! 其优...

匿名
2013/05/28
5.4K
1
HybridDB for MySQL计算规格全面加速OLAP场景

计算规格是HybridDB for MySQL最新推出的OLAP增强版本,通过自研的列式存储引擎CStore全面加速分析场景。 主打毫秒级实时数据更新+百亿大表任意维度毫秒级分析,在完备的SQL能力上,同时支持...

问璞
11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
2
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部