背景
最近需要将Greenplum 里近3亿记录的表迁移Oracle 测试性能。通过Python里的pandas.to_csv将order订单表按日期生成碎片化CSV文件,再通过Oracle SQLLDR工具将碎片化的CSV文件导入Oracle;
- 碎片文件目录如下
SQLLDR 导入Oracle 脚本
#!/bin/sh
source /home/oracle/.bash_profile
startDate="$1"
endDate="$2"
echo "起始日期:$startDate"
echo "结束日期:$endDate"
#将日期转成秒
startDateTime=`date -d "$startDate" +%s`
endDateTime=`date -d "$endDate" +%s`
#两个日期秒数差
diff=`expr $endDateTime - $startDateTime`
#计算天数(一天24*60*60=86400秒)
diffCount=$(expr $diff/86400)
#利用相差的天数输出两个日期之间所有日期
for((i=0;i> two.log
# sqlldr 导入
sqlldr userid=two/'two' control=/home/oracle/two/two.ctl log=/home/oracle/two/two_${cDate}.log
# 替换two.ctl 旧的日期目录
sed -i "s/$cDate/$nDate/g" two.ctl
done
SQLLDR 控制文件 :two.ctl
OPTIONS(ROWS=10000,BINDSIZE=32250000,READSIZE=322500000,skip=1)
LOAD DATA
CHARACTERSET UTF8
INFILE '/home/oracle/two/2023-06-01/order.csv'
INTO TABLE busi_order
APPEND
FIELDS TERMINATED BY ';'
trailing nullcols
(
id char(500),
create_time TIMESTAMP "YYYY-MM-DD HH24:MI:SS",
update_time TIMESTAMP "YYYY-MM-DD HH24:MI:SS"
字段略......
)
调用
sh two.sh 20230601 20231231 &
感言
记录工作中的一些实用脚本,希望能给大家带来一些帮助,感觉有所帮助请关注公众号
公众号:布衣530