shell脚本实现Oracle数据库表数据的导出(文本文件)和导入

!/bin/bash

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
DB=“tmp(用户)/用户密码”
##########################
#spool卸数
unld_dirtmp=“本脚本需要放置的目录”
log_dir=“/log”
data_dir=“/data”
cd $ {unld_dirtmp}${data_dir}
if [ $? -ne 0]; then
echo “卸数临时目录不存在 $ {unld_dirtmp}${data_dir}”
exit 1
fi

cd 本脚本需要放置的目录

sqlplus -s ${DB} <<! >/dev/null
set echo off;
set heading off;
set termout off;
set trimout on;
set trimspool on;
set feedback off;
set linesize 10000;
set pagesize 0;
set term off;

spool $ {unld_dirtmp}${data_dir}/ryx_plc_element_t.txt
select
branch_company_code || ‘,’ ||
policy_no || ‘,’ ||
product_code || ‘,’ ||
workdate || ‘,’ ||
prefium_amount || ‘,’ ||
population_stamp || ‘,’
from ryx_plc_element_t;

spool off;

!

cd $ {unld_dirtmp}${data_dir}
rm -f $ {unld_dirtmp}${data_dir}/ryx_plc_element_t.zip

zip -q -r ryx_plc_element_t.zip ryx_plc_element_t.txt

rm -f $ {unld_dirtmp}${data_dir}/ryx_plc_element_t.txt

echo “**** spool end date+‘%Y-%m-%-%d %H:%M:%S’****”

exit 0

----------上面的脚本把表数据导出并且压缩---------
接下来如何把导出的数据导入到另一个oracle环境下:
使用sqlldr命令来完成导入,需要准备一个控制文件。
控制文件名称为ryx_plc_element_t.ctl内容如下:
load data
infile *
replace
into table ryx_plc_element_t
fields terminated by ‘,’
trailing nullcols
(
branch_company_code “trim(:branch_company_code )”,
policy_no “trim(:policy_no)”,
product_code “trim(:product_code )”,
workdate “trim(:workdate)”,
prefium_amount “trim(:prefium_amount )”,
population_stamp “trim(:population_stamp )”
)

----上面控制文件也准备好了,接下来,把导出的数据的压缩包和控制文件放到新的Oracle环境的主机下的某一个目录下通过 SecuCRT进入到shell命令页面,cd 上一行放置文件的目录。
输入:
unzip ryx_plc_element_t.zip --解压文件
再次输入:wc -l ryx_plc_element_t.txt --查看文件行数
再次输入:
sqlldr circ(用户名)/对应的Oracle用户密码@主机ip地址/数据库名(如:cxidsdb) control=ryx_plc_element_t.ctl data=ryx_plc_element_t.txt log=ryx_plc_element_t.log bad=ryx_plc_element_t.bad direct=y &

—以上就是整个过程,一般用于新环境下部分数据的测试–

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值