- 浏览: 1022769 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
自动sqlldr导入脚本
- 博客分类:
- linux学习
自己写的通用的sqlldr导入脚本,配置在crontab 里面,每天自动导入数据:
#!/bin/bash
export ORACLE_BASE=/home/db/oracle/oracledb
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=BTOG
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".AL32UTF8
username=bimp
password=bimp
active_logfile_datadir=/opt/b2gbak216/.test/active_log_file
logfile_prefix_name=active_log
active_log_file_ctl=
insert_file_log(){
local file_name=$1
local operator_code=`
sqlplus -S /nolog <<EOF
conn $username/$password
set heading off feedback off
var out_file_id number;
call file_log_insert('$file_name',:out_file_id);
select :out_file_id from dual;
quit
EOF`
echo $operator_code
}
update_file_log(){
local file_id=$1
local operate_status=$2
local file_data=$3
local operator_code=`
sqlplus -S /nolog <<EOF
conn $username/$password
set heading off feedback off
var out_result_code number;
call file_log_update($file_id,'$operate_status','$file_data',:out_result_code);
select :out_result_code from dual;
EOF`
echo $operator_code
}
file_load(){
local data_child_dir=`ls -t $datadir`
for data_dir in $data_child_dir;do
if [ -d $data_dir ];then
all_data_file=`ls $data_dir`
for data_file in $all_data_file;do
centrol_file_load $datadir/$data_dir/$data_file $centrol_ctl $file_prefix_name $file_postfix_name
done
if [ -z $1 ];then
exit
fi
fi
done
}
file_load_all(){
file_load all
}
customer_tran_file_load(){
local datadir=/home/db/oracle/oracledb/flash_recovery_area/customer_tran
local control_ctl=/home/db/oracle/oracledb/flash_recovery_area/sqlldr/customer_tran/customer_tran.ctl
local file_prefix_name=TRAN_110_
local file_postfix_name=txt
local all_data_file=`ls $datadir|grep "$file_postfix_name$"`
for data_file in $all_data_file;do
centrol_file_load $datadir/$data_file $control_ctl $file_prefix_name $file_postfix_name
done
}
active_log_file_load(){
all_data_file=`ls $active_logfile_datadir`
for data_file in $all_data_file;do
centrol_file_load $active_logfile_datadir/$data_file $active_log_file_ctl $logfile_prefix_name $file_postfix_name
done
}
# manual load one file,the file path is absolute path
manual_file_load(){
local data_file
local control_file
local file_prefix_name
local file_postfix_name
echo -n "please input the data file name(absolute path):"
read data_file
echo -n "please input the control file name:"
read control_file
echo -n "please input the data file prefix name[]:"
read file_prefix_name
echo -n "please input the data file postfix name[]:"
read file_postfix_name
if [ -z $file_prefix_name ];then
file_prefix_name=all
fi
if [ -z $file_postfix_name ];then
file_postfix_name=all
fi
centrol_file_load $data_file $control_file $file_prefix_name $file_postfix_name
}
centrol_file_load(){
if [ -z $1 ];then
echo "call centrol_file_load function you must input the data file name"
exit 1
fi
if [ -z $2 ];then
echo "call centrol_file_load function you must input the control file name"
exit 1
fi
if [ -z $3 ];then
echo "call centrol_file_load function you must input the data file's prefix name"
exit 1
fi
if [ -z $4 ];then
echo "call centrol_file_load function you must input the data file's postfix name"
exit 1
fi
local l_data_file=$1
local l_control_file=$2
local l_file_prefix_name=$3
local l_file_postfix_name=$4
local l_simple_data_file_name=`basename $l_data_file`
if [ -f "$l_data_file" ] && [ -s "$l_data_file" ];then
if [ ${l_simple_data_file_name:0:${#l_file_prefix_name}} == $l_file_prefix_name ] || [ $l_file_prefix_name == "all" ];then
if [ ${l_simple_data_file_name##*.} == $l_file_postfix_name ] || [ $l_file_postfix_name == "all" ];then
#1.insert the datafile to databasea
v_file_id=`insert_file_log $l_data_file`
if [ $v_file_id != "0" ];then
if [ $l_control_file != "" ] && [ -f "$l_control_file" ] && [ -s "$l_control_file" ];then
#2.sqlload read datafile data to database
load_data $l_data_file $l_control_file
#3.if sqlload the data success,update the file operate_status from the database
if [ -f "$l_data_file.bad" ];then
update_file_log $v_file_id 0 ${l_simple_data_file_name:${#l_file_prefix_name}:8}
else
update_file_log $v_file_id 2 ${l_simple_data_file_name:${#l_file_prefix_name}:8}
tar -czf $l_data_file.tar.gz $l_data_file
mv $l_data_file.tar.gz /home/db/oracle/oracledb/flash_recovery_area/data_archive/
rm -fr $l_data_file
fi
else
update_file_log $v_file_id 0 ${l_simple_data_file_name:${#l_file_prefix_name}:8}
echo "file load errors,because the the control file is not exists or control file is empty or control file errors"
fi
else
echo "file load errors,because the file name $l_data_file have be in the database or database error"
fi
else
echo "data file load errors,the data file postfix name ${l_simple_data_file_name:0:${#l_file_prefix_name}} and l_file_postfix_name param value is $l_file_postfix_name not equal"
fi
else
echo "data file load errors,the data file prefix name ${l_simple_data_file_name##*.} and l_file_prefix_name param value is $l_file_postfix_name not equal"
fi
else
echo "data file load errors,because the data file $l_data_file is not exists or data file is empty"
fi
}
load_data(){
if [ -z $1 ];then
echo "call load_data function you must input the data file name"
exit 1
fi
if [ -z $2 ];then
echo "the control_file param is need"
exit 1
fi
if [ -f $1 ] && [ -f $2 ];then
local file_name=$1
local control_file=$2
sqlldr $username/$password CONTROL="${control_file}" DATA="${file_name}" BAD="${file_name}.bad" DISCARD="${file_name}.disc" LOG="${file_name}.log" ERRORS=100 DIRECT=true SKIP=1 rows=10000
else
echo "the data_file $file_name or control_file $control_file is not exists"
fi
}
case "$1" in
customer_tran_file_load)
customer_tran_file_load
;;
active_log_file_load)
active_log_file_load
;;
manual_file_load)
manual_file_load
;;
insert_file_log)
insert_file_log
;;
update_file_log)
update_file_log
;;
load_data)
load_data
;;
*)
echo $"Usage: $0 {customer_tran_file_load|active_log_file_load|insert_file_log|update_file_log|load_data|active_log_file_load|manual_file_load}"
exit 1
;;
esac
exit 0
发表评论
-
centos 编译 安装 protobuf
2012-08-15 17:01 8677yum -y install gcc+ gcc-c++ yu ... -
linux下删除文件后没有释放空间(转)
2012-08-08 11:07 2010问题 文件被删除后,空间没有被释放 原因 在Linux或者 ... -
red hat/Centos/Oracle linux禁用单用户模式
2012-07-26 23:55 2041目的是禁用red hat/Centos/Oracle linu ... -
oracle linux server 6.0修改网卡名称
2012-07-26 01:12 2204修改网卡规则:先关闭网络服务,修改配置文件网卡的HWADDR值 ... -
centos6.0配置本地yum
2012-07-25 23:54 979centos6.0配置本地yum 使用vm虚拟机安装的cen ... -
Connection activation failed Device not managed by NetworkManager
2012-07-22 20:26 1487系统中有两个服务在管理网络,所以需要停掉一个, 1. Re ... -
warning: waiting for transaction lock on /var/lib/rpm/__db.000
2012-06-06 12:03 1264故障现象:[root@localhost Mysql4.1.1 ... -
Linux 查看目录大小及文件数量命令
2012-04-10 10:29 1236查看当前目录大小: [root@21andy.com]# ... -
linux /dev/shm的用途
2011-11-22 10:36 335891.linux下的/dev/shm是什么? /dev/shm ... -
configure/make/make install的作用
2011-08-12 01:10 901这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产 ... -
执行脚本出现bin/bash: bad interpreter: No such file or directory
2011-07-27 16:50 762错误原因之一很有可能是你的脚本文件是DOS格式的, 即每一行的 ... -
Ubuntu下Oracle的自动启动
2011-07-06 23:38 2488一、使用root用户修改/etc/oratab 文件: $ ... -
如何将ubuntu文件夹中文名改为英文
2011-03-07 02:10 8595ubuntu对中文的支持越来越好,这自然是好事。不过在终端下输 ... -
Ubuntu 10.04下的搭建SUN JAVA开发环境
2011-03-07 00:53 958下面是Ubuntu 10.04下的搭 ... -
Ubuntu Server 安装图形桌面环境
2011-03-07 00:43 12371.准备环境首先得安装好ubuntu-10.04-server ... -
ubuntu安装SSH,支持开启sftp服务
2011-03-06 23:55 2762ubuntu安装SSH 安装 SSH(Secure Shel ... -
ubuntu终端乱码问题解决方案
2011-03-05 23:12 1853解决方法: 一. Ubuntu默认的中文字符编 ... -
linux使用sar命令进行系统监视优化
2011-01-23 01:30 4386了解如何将用户抱怨与 ... -
Linux启动过程简介
2011-01-22 23:56 1116Bootloader 在Alpha/AXP平台 ... -
Linux下很全面的监控工具dstat
2011-01-17 02:02 12791) 工具说明dstat是一个用来替换 vmstat,ios ...
相关推荐
Oracle的SQL*Loader(简称SQLLDR)工具就是这样一个强大的数据加载器,它能快速高效地将数据从外部文件批量导入到数据库中。结合批处理(BAT)脚本,我们可以自动化这个过程,提高工作效率。下面我们将详细探讨如何...
在Oracle数据库管理中,"spool"和"sqlldr"是两种非常实用的工具,用于数据的导出和导入操作。下面将详细解释这两个概念及其使用方法。 **1. Spool导出** Spool是Oracle SQL*Plus中的一个功能,它允许用户将SQL*...
使用`ora_load.sh`脚本来自动化导出源数据库中的表数据,然后在目标数据库上创建相同的表结构,接着通过FTP传输数据文件到目标数据库,并执行`batch_load_data.sh`脚本来导入数据。导出数据时,利用`spool`功能将...
在提供的压缩包文件`spool和sqlldr实例`中,你可能找到了一个具体的Shell脚本,该脚本演示了如何结合使用这两个工具。这个脚本可能包含了以下几个部分: 1. 初始化环境,如设置Oracle环境变量。 2. 使用Spool将SQL...
- 若要实现自动导入,可以将上述步骤封装到脚本或程序中,例如用PL/SQL、Java或Python编写。定期运行该脚本,即可自动从Excel导入数据。 除了SQL*Loader,还有其他方法可以实现Oracle数据导入,例如使用Oracle SQL...
7. **自动化脚本支持**:对于需要定期执行的数据装载任务,OraLoader允许用户创建和保存脚本,实现任务的自动化执行,提高工作效率。 8. **安全性**:OraLoader尊重Oracle的安全机制,确保在装载数据时遵循用户的...
sqlplus不仅支持简单的SQL命令,还支持脚本执行,使得批量处理和自动化任务变得可能。 **sqlldr** 是另一个关键组件,全称为SQL*Loader,它是用于快速加载大量数据到Oracle数据库的工具。通过控制文件定义数据格式...
创建并运行导入脚本 创建一个Shell脚本 `imp.sh` 来调用SQL*Loader命令: ```bash #!/bin/bash sqlldr 'DBUSER/PASSWORD control=/export/home/imp.ctl' data=/export/home/port.txt log=port.log ``` 其中: - ...
本教程将详细介绍如何通过shell脚本利用Oracle Instant Client 11.2 Basic连接到Oracle数据库,并使用sqlldr工具进行数据导入。 首先,`oracle_usr.tar.gz`是一个包含Oracle Instant Client文件的压缩包。你需要将...
- **PL/SQL程序**:通过编写自定义的PL/SQL脚本来导入数据,适合复杂的数据转换需求。 - **第三方工具**:如ETL工具(如Informatica, Talend)可实现更复杂的数据迁移、清洗和转换。 **4. Oracle企业管理器的数据...
SQL*Plus是Oracle的命令行工具,通过编写脚本实现导出。例如,创建`main.sql`设置环境并调用`get_tables.sql`,在`get_tables.sql`中编写SQL查询。执行`sqlplus "/ as sysdba" @d:\main.sql`即可生成Excel文件。 ...
在提供的脚本`sqlload_data_file.sh`中,用户只需要输入表名、分隔符和入库文件名,脚本就会自动处理剩下的工作。以下是脚本的主要步骤: 1. **检查输入参数**:确保用户提供了正确的参数数量,即表名、分隔符和...
Oracle SQL*Loader是一款强大的工具,用于快速...同时,合理利用批处理脚本可以自动化整个过程,提高工作效率。对于初学者,理解并熟练掌握这些步骤是至关重要的,以便在日常工作中能够有效地管理和维护Oracle数据库。
- 可以使用专门的工具如DataDirect DBmaestro等来自动转换SQL脚本,减少手动工作量。 3. **编写转换脚本**: - 根据具体需求编写转换脚本,确保数据类型的正确转换。 #### 四、数据导入 1. **Oracle表空间创建**...
交互式方式适合初学者,命令行方式适合自动化脚本,参数文件方式则可以方便地管理复杂的导出导入操作。 - **导出模式**:包括表方式、用户方式和全库方式。表方式允许用户导出单个或多个表,用户方式导出特定用户的...
- **脚本**:编写SQL*Loader控制文件,自动化数据加载过程。 Oracle数据库备份与恢复不仅涉及工具的使用,还需要理解备份类型(如完整备份、增量备份、差异备份)、恢复策略(如点-in-time恢复、介质恢复)以及...
sqlldr arms/arms@armsdb control=jrb.ctl data=jrb.dat ``` - 其中 `arms/arms@armsdb` 表示数据库用户名为 `arms`,密码为 `arms`,连接的数据库为 `armsdb`。 - `control=jrb.ctl` 指定了控制文件。 - `...
在EBS中,通过并发程序可以实现自动化处理大量数据的任务,提高工作效率。基于主机文件的并发程序是其中一种常用的技术手段,主要应用于数据导入、导出等场景。 #### 二、关键步骤详解 ##### 第一步:建立可执行...
#### 一、EXP/IMP (导出与导入) **1.1 基本命令** - **EXP**: 用于从数据库导出数据。 - `exp username/password [参数]` - **IMP**: 用于向数据库导入数据。 - `imp username/password [参数]` **1.2 高级选项...
3. **数据导入**:有了Oracle兼容的表结构后,可以使用`sqlldr`或`Oracle SQL Developer Data Pump`等工具将MySQL的数据导入Oracle。数据导入过程中需处理数据格式、大小写敏感性等问题。 4. **应用程序调整**:...