!/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 &
—以上就是整个过程,一般用于新环境下部分数据的测试–