请教perl插入数据到oracle的效率问题!!
时间:2011-01-18
来源:互联网
use DBI;
use IO::File;
use POSIX qw(strftime);
$input = IO::File->new("test.bcp");
$dbh=DBI->connect("dbi:Oracle:host=$host;sid=orcl", $user, $passwd) || die "Database connection not made: $DBI::errstr";
$sth = $dbh->prepare("INSERT INTO table(14个字段) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
while (defined($line = $input->getline()))
{
chomp($line);
@datarry=split(/\t/,$line);
$snum++;
。。。对每个字段的处理。。。
$sth->execute(14个变量);
}
$input->close();
$sth->finish();
$dbh->disconnect();
exit;
上面是我的代码,因为项目保密的关系,数据库字段被我隐藏了。
我是从一个文件读取每行记录,每行记录有14个字段,每次读一行入库。文件有3千5百多万行记录。用我的脚本执行了
差不多2天。应该是有严重的效率问题吧。
请高手帮我分析一下。数据库应该是没有什么问题的。同事拿c语言写入库程序感觉入库快多了。
作者: freecr_cu 发布时间: 2011-01-18
作者: yiten 发布时间: 2011-01-18
作者: lkk2003rty 发布时间: 2011-01-18
lkk2003rty 发表于 2011-01-18 16:20
因为他需要“。。。对每个字段的处理。。。”吧?LZ
作者: yiten 发布时间: 2011-01-18
是的,这个数据文件文件有近4G,每行有不止14个字段,我只取14个字段信息,处理后再入库。
我是感觉慢,我感觉3千多万行数据部应该入库近两天吧,太不可思议了,我是头一回遇到这么大数据量。
也不知道是不是模式匹配split那里慢。要是c语言的话,我可以拿gprof分析函数性能,perl还真不知道程序里是哪一步最慢了.
作者: freecr_cu 发布时间: 2011-01-18
如果是为了效率可以用oracle的 external table
作者: lijian_123 发布时间: 2011-01-18
作者: lijian_123 发布时间: 2011-01-18
囧 木有注意看 看看楼主是怎么处理字段的 如果sqlloader 能做到的话 就用sqlloader
作者: lkk2003rty 发布时间: 2011-01-18
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28