文档章节

oracle 数据批量导出工具

一贱书生
 一贱书生
发布于 2016/06/16 20:21
字数 707
阅读 71
收藏 0
点赞 0
评论 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
博文 722
码字总数 600072
作品 0
Oracle数据转移Mysql中遇到的问题以及解决办法

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

littleant2 ⋅ 2015/07/30 ⋅ 0

数据库管理工具--CoolSQL

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

匿名 ⋅ 2009/07/08 ⋅ 1

配置oracle10g oem中的主机身份证明

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

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Oracle开发工具--Oracle SQL Handler

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

匿名 ⋅ 2013/05/28 ⋅ 1

转载数据库导入导出

一、背景介绍 9i,10g,11g 支持Export 与 Import工具,以后的版本将不在支持。建议改用数据泵,数据泵是Export 与 Import工具加强。 Export 与 Import的操作是针对.dmp文件的,是oracle专有的...

longfirst ⋅ 2015/03/13 ⋅ 0

用pl/sql实现oracle数据的导出和导入

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

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

Oracle数据泵(Data Pump)

前言:努力的人最后一定不会太差!!关注博客或者加Q:1445696451一起努力! ~ ~ ~ ~ ~ ~ 分割 ~ ~ ~ ~ ~~~ 一、简介 1、逻辑备份:是创建数据库对象的逻辑副本,并存入一个二进制转储文件的...

张晨chat ⋅ 06/08 ⋅ 0

十二、oracle 数据库(表)的逻辑备份与恢复

一、介绍 逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程。 逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程。 物...

openlife ⋅ 2015/07/07 ⋅ 0

从SQL Server数据库转到Oracle数据库的数据脚本处理

在我们很多情况下的开发,为了方便或者通用性的考虑,都首先考虑SQL Server数据库进行开发,但有时候客户的生产环境是Oracle或者其他数据库,那么我们就需要把对应的数据结构和数据脚本转换为...

walb呀 ⋅ 2017/12/04 ⋅ 0

Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作

Oracle中对数据对象和数据的管理,无疑都是使用PL/SQL Developer来进行管理,该工具也提供给我们很多方便、快捷的操作,使得我们不再为Oracle本身丑陋、难用的UI而抱怨。由于我们一般都是建建...

长平狐 ⋅ 2012/08/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 53分钟前 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao ⋅ 昨天 ⋅ 0

聊聊spring cloud netflix的HystrixCommands

序 本文主要研究一下spring cloud netflix的HystrixCommands。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clo......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部