文档章节

oracle 数据批量导入工具

一贱书生
 一贱书生
发布于 2016/06/16 20:37
字数 1006
阅读 11
收藏 0
点赞 0
评论 0

#!/bin/ksh---- 如果文件的第一个字符不是#说明使用的是Bsh,如果第一个字符是#则使用Csh,
如果第一个字符#后面跟!/bin/ksh,说明该脚本使用指定的shell 执行,即为/bin目录下的ksh解释执行. ‘#’是注释符,‘!’紧跟着‘#’一起表示在执行这个脚本时
使用其后的“/bin/ksh”解释器执行脚本文件中后面的内容。
同时“/bin/ksh”表示解释器所在的路径

basedir是一般工作目录。

homedir是登录后的目录(终端)。

 

 

 

/bin 二进制可执行命令

/dev 设备特殊文件
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本
/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/sbin 超级管理命令,这里存放的是系统管理员使用的管理程序
/tmp 公共的临时文件存储点
/root 系统管理员的主目录
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统
/lost+found这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/var 某些大文件的溢出区,比方说各种服务的日志文件
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录,其中包含:

/usr/x11R6 存放x window的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库根文件系统

 

#表数据导入

HOMEDIR=$PWD--当前目录

THISNAME=`basename $0`

usage(){
        echo
        echo "Oracle库表数据导入"
        echo "========================="
        echo
        echo "Usage:"
        echo "  $THISNAME -Uuser -Ffilename -Ttblname "
        echo
        echo "Parameter:"
        echo "  -U  用户名/密码@服务名"
        echo "  -F  数据文件名"
        echo "  -T  表名"
        echo
        exit 1
}

# 参数分析
#echo "入参个数[$#]"
if [ $# -ne 3 -a $# -ne 6 ] ;then
    usage ;
fi

while getopts U:P:F:T: OPTION
do
        case $OPTION in
                U)      DBUSR=$OPTARG
                                #echo "用户名:[${DBUSR}]"
                        ;;
                F)      DATAFILE=$OPTARG
                                #echo "导入文件名:[${DATAFILE}]"
                        ;;
                T)      TBLNAME1=$OPTARG
                            TBLNAME=${TBLNAME1};
                                #echo "导入文件名:[${TBLNAME1}]"
                        ;;
                ?)      usage ;;
                *)      usage ;;
        esac
done

rm ${TBLNAME}.ctl
#下载表数据
#    if [ -z "$DBUSR" ] || [-z "$DATAFILE"] || [-z "$TBLNAME1"]; then
#        echo "Usage:load -U 用户名/密码@服务名 -F  数据文件名 -T  表名\n"
#        exit
#    fi
    
    
    
    echo "表[$TBLNAME]开始导入\n"
    SQLFILD="COLUMN_NAME ||decode(sign(DATA_LENGTH-255),1,concat(concat('   char(', DATA_LENGTH), ')')) "
    sqlwhere="table_name=upper('$TBLNAME')"
        
    SQLS="select ${SQLFILD}  from user_tab_columns where ${sqlwhere} order  by table_name,column_id;"
        
    #echo $SQLS
    
    sqlplus -S ${DBUSR} <<-!!! >/dev/null
        set colsep '|'
        set heading off
        set feedback off
        set pagesize 0
        set linesize 3000
        set echo off
        set termout off
        set verify off
        set numwidth 16
        set trimspool on
    
        spool ${TBLNAME}.a
    
        ${SQLS}
        spool off
    !!!
    HEAD="load data infile '${DATAFILE}' append into
 table ${TBLNAME} FIELDS TERMINATED BY \"|\" TRAILING NULLCOLS ("
        cat ${TBLNAME}.a | sed 's/$/,/g' | sed 's/ *//g'|sed -n '1,$p' > ${TBLNAME}.b
        cat ${TBLNAME}.b | sed '$s/,//'|sed -n '1,$p' > ${TBLNAME}.a
       
       #echo "控制文件头:[${HEAD}]"
        echo $HEAD>${TBLNAME}.txt
        echo ")">tail.txt
    cat ${TBLNAME}.txt ${TBLNAME}.a tail.txt>${TBLNAME}.c
cat ${TBLNAME}.c | sed 's/char(/  char(/g'|sed -n '1,$p'>${TBLNAME}.ctl
             
        rm ${TBLNAME}.txt
        rm tail.txt
        rm ${TBLNAME}.a
        rm ${TBLNAME}.b
        rm ${TBLNAME}.c
         
    if [ $? -ne 0 ]; then
        echo "生成表[$TBLNAME]控制文件失败\n"
    fi
    echo "生成表[$TBLNAME]控制文件完成,导入数据,请查看结果\n"

sqlldr ${DBUSR} control=${TBLNAME}.ctl log=${TBLNAME}.log bad=${TBLNAME}.bad  errors=10000
retcode=`echo $?`
case "$retcode" in
0) echo "\nSQL*Loader execution successful" ;;
1) echo "\nSQL*Loader execution exited with EX_FAIL, see logfile" ;;
2) echo "\nSQL*Loader execution exited with EX_WARN, see logfile" ;;
3) echo "\nSQL*Loader execution encountered a fatal error" ;;
*) echo "unknown return code";;
esac
echo "表[$TBLNAME]导入结束\n"

 

© 著作权归作者所有

共有 人打赏支持
一贱书生
粉丝 19
博文 722
码字总数 600072
作品 0
探讨数据库的数据导入方法

每个数据库治理员都会面临数据导入的问 题,这有可能发生在数据库的新老移植过程中,或者是在数据库崩溃后的恢复重建过程中,还有可能是在创建测试数据库的模拟环境过程中,总之作为一名合格...

紫地瓜 ⋅ 2012/11/27 ⋅ 0

天下数据支招大批量数据导入数据库,dbf导入oracle,csv导入oracle

   Excel 07-2003一个工作表最多可有65536,行最多可有256列;Excel 2007及以后版本,一个工作表最多可有1048576行,16384列。   一、小批量数据处理:   方法一:用excel可以直接打开...

冬眠的包子 ⋅ 2016/03/23 ⋅ 0

Oracle数据转移Mysql中遇到的问题以及解决办法

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

littleant2 ⋅ 2015/07/30 ⋅ 0

oracle 导入数据无法终止

oracle导入数据时,表和数据完全导入,导入命令不提示导入成功,在等待,这样我就无法进行批量导入,请问是什么原因导致的啊?

南北024 ⋅ 2011/08/24 ⋅ 4

CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 发布

[Tip:2011-05-19 14:55左右修正个别Bug后重新上传了一下,之前下载的新重新下载。] 杂七几句: 自从购买VPS之后,打算将 秋色园QBlog 搬迁,也想把目前的Access数据库换成其它数据库。 由于...

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

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

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

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

在Go中如何批量提交数据?

在项目中,经常有批量提交数据,因为数据的产生比较快,每秒大概有2500条记录,外网数据库用了阿里云的DRDS(MySQL),内网数据库是Oracle 11g,后台开发用Go,因为业务模型的需要,需要把这...

洋和尚耶稣 ⋅ 2016/03/14 ⋅ 0

Sqoop架构以及应用介绍

本篇文章在具体介绍Sqoop之前,先给大家用一个流程图介绍Hadoop业务的开发流程以及Sqoop在业务当中的实际地位。 如上图所示:在实际的业务当中,我们首先对原始数据集通过MapReduce进行数据清...

a2011480169 ⋅ 2016/05/25 ⋅ 0

查杀DeDe数据库后门 网站安全狗DeDe专杀工具

DeDe是国内知名的PHP开源网站管理系统,很多用户都在使用这一系统,网站安全狗DeDe数据库后门查杀工具,主要就是为了帮助用户扫描清除数据库后门,能更好的使用DeDe系统,不用担心安全问题。...

小猪猪的风 ⋅ 2014/10/16 ⋅ 0

sqoop简介以及架构介绍

本篇文章在具体介绍Sqoop之前,先给大家用一个流程图介绍Hadoop业务的开发流程以及Sqoop在业务当中的实际地位。 如上图所示:在实际的业务当中,我们首先对原始数据集通过MapReduce进行数据清...

qi49125 ⋅ 2017/11/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Boot整合模板引擎thymeleaf

项目结构 引入依赖pom.xml <!-- 引入 thymeleaf 模板依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId......

yysue ⋅ 20分钟前 ⋅ 0

ConstraintLayout使用解析

AndroidStudio3.0创建Project默认的布局就是ConstraintLayout。 AndroidStudio3.0前的可以自己修改,使用ConstraintLayout。 为了要使用ConstraintLayout,我们需要在app/build.gradle文件中...

_OUTMAN_ ⋅ 31分钟前 ⋅ 0

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 今天 ⋅ 9

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 今天 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部