不可轻言放弃,否则对不起自己!
perl sprintf
上一篇 /
下一篇 2012-12-17 14:34:12
/ 个人分类:perl
#!/usr/bin/perl
use warnings;
use strict;
#说明
$~="DESC";
write;
format DESC=
================================================================================
说明:
本脚本完成Sms_UserTable表数据构造与导入(SqlLoad)。
================================================================================
.
print "\n请输入上限(只能是正整数):\n";
my $num=<STDIN>;
chomp($num);
if($num gt 0 and $num ne "")
{
open(FILE,">Sms_UserTable.txt") || die "Can not open file,$!";
for(my $i=0;$i<$num;$i++)
{
my $MSISDN=sprintf "86131%08d",rand(99999999);
my $sServices="1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111";
print FILE "$MSISDN\,";
print FILE "$sServices\n";
}
close(FILE);
#导入数据
&load_data;
}
else
{
print "\n上限输入非法,退出!\n\n";
exit;
}
sub load_data
{
if(-f "Sms_UserTable.txt")
{
print "\n拼接文件\n";
open(CTL,">Sms_UserTable.ctl") || die "";
print CTL "load data\n";
print CTL "infile 'Sms_UserTable.txt'\n";
print CTL "Append\n";
print CTL "into table Sms_UserTable\n";
print CTL "fields terminated by \",\"\n";
print CTL "\(MSISDN, sServices\)\n";
close(CTL);
#判断文件是否存在
if(-f "Sms_UserTable.ctl")
{
#执行sqlldr:
print "\n请输入
数据库用户名:\n";
my $user=<STDIN>;
chomp($user);
if($user eq "" || $user eq "\n")
{
print "\n输入数据库用户名非法,退出!\n\n";
exit;
}
print "\n请输入数据库用户名对应密码:\n";
my $pass=<STDIN>;
chomp($pass);
if($pass eq "" || $pass eq "\n")
{
print "\n输入数据库用户名对应口令非法,退出!\n\n";
exit;
}
print "\n请输入数据库别名:\n";
my $sid=<STDIN>;
chomp($sid);
if($sid eq "" || $sid eq "\n")
{
print "\n输入数据库用户别名非法,退出!\n\n";
exit;
}
print "\n开始导入数据\n";
#sqlldr
user/pwd@sidcontrol="insert.ctl"
system("sqlldr $user\/$pass\@$sid control=\"Sms_UserTable.ctl\" readsize=9999999 rows=100000 bindsize=9999999 direct=y");
}
else
{
print "\n拼接控制文件不存在,退出!\n\n";
exit;
}
}
else
{
print "\n[Sms_UserTable.txt]文件不存在,退出!\n\n";
exit;
}
}
收藏
举报
TAG: