当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

Perl实现文件及数据库访问

发表于: 2014-02-14   作者:乖乖的老马   来源:转载   浏览次数:
摘要: 写了一个perl脚本,使用了循环、控制台输出、访问文件以及访问数据库等特性,实现从文本文件中,读入多条已格式化的记录,按规定的分隔符解析,并插入到mysql数据库中。 一、预备条件: 0、安装perl解释器(废话); 1、安装有数据库(本人使用的是mysql); 2、perl已安装DBI模块。(注意:使用访问数据库功能时,须先安装相应的模块,即DBI模块,安装方法如链接所示: h
写了一个perl脚本,使用了循环、控制台输出、访问文件以及访问数据库等特性,实现从文本文件中,读入多条已格式化的记录,按规定的分隔符解析,并插入到mysql数据库中。

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

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


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);


三、perl脚本代码:

#!/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";
	}
}


四、附件介绍:
0、test.pl是perl脚本,test.log是整理好准备要插入的数据文件,test.sql是在mysql中建表的脚本。
1、先运行test.sql,在mysql中建表。
2、把test.log与test.pl放在同一个目录下。
3、运行test.pl可插入数据。

Perl实现文件及数据库访问

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
需要按照DBI模块,如果访问特定的数据库如MySQL还需要安装特定的模块如DBI::MySQL…… Using Databas
由于工作中有个项目需要爬取第三方网站的内容,所以在Linux下使用Perl写了个简单的爬虫。 相关工具
《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件 马根峰 (广东联合电子服务股份有
应用程序服务器使您可以使用服务器端的资源,例如数据库。例如,动态页可以指示应用程序服务器从数
blog迁移至 :http://www.micmiu.com 应用场景: 假设有A、B、C三台设备,A<==>B可以互相访问
blog迁移至 :http://www.micmiu.com 应用场景: 假设有A、B、C三台设备,A<==>B可以互相访问
blog迁移至 :http://www.micmiu.com 应用场景: 假设有A、B、C三台设备,A<==>B可以互相访问
本文转载:http://www.cnblogs.com/gaochundong/archive/2013/04/24/csharp_file_database.html#com
C#实现文件数据库 如果你需要一个简单的磁盘文件索引数据库,这篇文章可以帮助你。 文件数据库描述
在Windows服务器上审计和监控文件的访问情况是一种保护企业敏感数据的有效方式,并且符合行业规定。
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号