Oracle构造数据(二)
#主函数体
$time=getsystime();
open AA, ">./$tablename$time.txt"|| die "Open File Error.";
for($j=1;$j<=$totalnum;$j++)
{
#随机取值范围
my $ballot_id = getrandnum(1,100000); --从1 到 100000中随机取一个值
my $option_id = getrandnum(1,10000000); --从1 到 10000000中随机取一个值
my $msisdn = getrandnum(13700000001,13900000001); --从13700000001 到13900000001中随机取一个值作为手机号
#随机时间
my $ballot_time = getrandtime(); --从2010-01-01 00:00:00 到2014-12-31 23:59:59之间随机取一个时间作为ballot_time字段的值
#枚举类型
my $type_id = $type_id[int rand @type_id]; --从"N1","N2","N3","N4","N5","N6","N7","N8","N9","N10","N11","N12"等数据中随机取一个枚举数据作为type_id的值
#随机字符取值
if ( $j%500 == 1 )
{
$source_name = getrandchar(500); --随机生成500个字符
}
my $bookname = substr($source_name, getrandnum(1,200), 5); --从1至200位中随机取一个起始位置开始往后取5个字符作为书名
my $charptername = substr($source_name, getrandnum(1,100), 15); --从1至100位中随机取一个起始位置开始往后取15个字符作为章节名
#序列
my $sequence_id = 10000 + $j; --从1000开始往后递增1生成序列值
printf AA "$sequence_id|$ballot_id|$option_id|$msisdn|$ballot_time|$bookname|$charptername|$type_id\n"; --输出一条记录,各字段以"|"分隔
}
close AA;
$escapetime=getsystime() - $time;
print "Finish! escapetime = $escapetime s \n";
第三步、把该脚本保存后上传至linux操作系统服务器上
第四步、进行赋权操作
chmod 777 script.sh
第五步、执行该脚本
./script.sh
第六步、找到生成的文件
第七步、编辑SQLLOAD
vi load.ctl
LOAD DATA
INFILE 'test20100424114210.txt' --文件名替换成生成的文件名
append
INTO TABLE us_present_record
FIELDS TERMINATED BY '|'
(
sequence_id,
ballot_id,
option_id,
msisdn,
ballot_time "to_date(:ballot_time,'''yyyy-mm-dd hh24:mi:ss''')",
bookname,
charptername,
type_id
)
第八步、执行命令进行入库操作
sqlldr 用户名/密码 control=load.ctl --load.ctl是控制文件的文件名