日期:2014-05-16  浏览次数:20656 次

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是控制文件的文件名