Perl实现文件及数据库访问

写了一个perl脚本,使用了循环、控制台输出、访问文件以及访问数据库等特性,实现从文本文件中,读入多条已格式化的记录,按规定的分隔符解析,并插入到mysql数据库中。

[b]一、预备条件:[/b]
0、安装perl解释器(废话);
1、安装有数据库(本人使用的是mysql);
2、perl已安装DBI模块。(注意:使用访问数据库功能时,须先安装相应的模块,即DBI模块,安装方法如链接所示:[url]http://www.cnblogs.com/itech/archive/2009/08/10/1542832.html[/url])

[b]二、准备工作:[/b]
1、新建文本文件 test.log,perl将会从此文件读取数据,并插入数据库。其内容为:
[quote]20120507|192.168.10.1|50
20131222|172.18.33.55|24
20130706|202.116.60.5|61[/quote]

2、在mysql中新建数据表,从文本文件读来数据将会插入此表。脚本内容为:
create database testdb;
use testdb;

create table test(createtime datetime not null default '19000101', ipaddr varchar(20) not null default '', counter int not null default 0);


[b]三、perl脚本代码:[/b]


#!/usr/bin/perl

use DBI;
#use DBD::mysql;

my $maillog = "./test.log";

my ($dataSoureName) = "DBI:mysql:test:localhost"; #data source name
my ($userName) = "root"; # user name
my ($password) = ""; # password
my ($dbh, $sth); #database and statement handles
my $dbh = DBI->connect($dataSoureName, $userName, $password, {'RaiseError'=>1});

open(FF, $maillog) || die "ERROR:$!";
while(<FF>) {
my($createtime,$ipaddr,$counter) = (split /\|/, $_);

&insert_test($createtime, $ipaddr, $counter);
}
close(FF);
$dbh->commit();
$dbh->disconnect();

sub insert_test(){
my ($createtime,$ipaddr,$counter) = @_;

#my $sql = $createtime." ".$ipaddr." ".$counter;
#print $sql
my $sql = "insert into test(createtime, ipaddr, counter) values(?, ?, ?)";
eval {
$sth = $dbh->prepare($sql);

$sth->bind_param(1, $createtime);
$sth->bind_param(2, $ipaddr);
$sth->bind_param(3, $counter);

$sth->execute();
$dbh->commit();
};

if ($@) {
print "errorcode $@\n";
}
}


[b]四、附件介绍:[/b]
0、test.pl是perl脚本,test.log是整理好准备要插入的数据文件,test.sql是在mysql中建表的脚本。
1、先运行test.sql,在mysql中建表。
2、把test.log与test.pl放在同一个目录下。
3、运行test.pl可插入数据。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值