文档章节

oracle 数据批量导出工具

一贱书生
 一贱书生
发布于 2016/06/16 20:21
字数 707
阅读 87
收藏 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
数据库管理工具--CoolSQL

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

匿名
2009/07/08
15.2K
1
配置oracle10g oem中的主机身份证明

Oracle10g中,用oem工具设置数据库备份与恢复策略非常方便实用,但是在配置时需要提供主机身份证明。其实主机身份证明就是Oracle所在主机的OS账户。输入账户名和密码后,常提示验证错误: 检...

晨曦之光
2012/03/09
0
0
Oracle开发工具--Oracle SQL Handler

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

匿名
2013/05/28
5.4K
1
用pl/sql实现oracle数据的导出和导入

一、PL/SQL工具实现oracle数据导出 1. 数据对象导出 工具->导出用户对象,弹出如下界面: 选择用户,选择导出文件的路径,命名导出文件名称(.sql),然后点击导出即可。 注意:此方法只能导...

为自己插上翅膀
01/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
29分钟前
0
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
34分钟前
1
0
TiDB 在爱奇艺的应用及实践

爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方...

TiDB
39分钟前
0
0
Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
3
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部