Csv在perl中上传到mysql

时间:2014-09-18 04:43:08

标签: mysql linux perl csv

我是perl编程语言的新手。能否指导一下如何将csv上传到mysql数据库。

我有以下表& csv文件格式

创建表格

CREATE TABLE consumeruser (
  ConsumerId    int(10) NOT NULL AUTO_INCREMENT,
  ConsumerName  varchar(45) DEFAULT NULL,
  ConsumerMobNo varchar(10) DEFAULT NULL,
  PRIMARY KEY (ConsumerId)
) ENGINE=InnoDB AUTO_INCREMENT=4494 DEFAULT CHARSET=latin1

Csv文件示例:

4495,Sanchita Mehra,999999999
4496,Rupesh Shewalkar,88888888
4497,Aditya Mishra,111111111

Csv上传应该基于手机号码,假设表格已经包含手机111111111那么该行应该被跳过。意味着所有移动号码都应该用现有数据进行检查,如果已经在数据库中那行不应该插入数据库中。其余的插入数据库。

1 个答案:

答案 0 :(得分:0)

您可以检查行的计数以查看数据是否已存在,然后继续显示下一个语句(如果存在)。该实现适用于SQLite,您可以将其更改为MySQL。

#!/usr/bin/perl

use Modern::Perl '2012';
use DBD::SQLite;
use warnings;

my $dbh = DBI->connect("dbi:SQLite:dbname=Consumer");

while(<DATA>){
    chomp;
    my ($id, $name, $MobNo) = split /,/;
    my $query = "select count(*) from consumeruser where ConsumerMobNo = ?";
    my $sth = $dbh->prepare($query);
    $sth->execute($MobNo);
    my $row = $sth->fetch();
    next if(@$row > 0);
    my $insertStatement = "insert into consumeruser values(?,'?',?)";
    $sth = $dbh->prepare($insertStatement);
    $sth->execute($id,$name,$MobNo);
}

__DATA__
4495,Sanchita Mehra,999999999
4496,Rupesh Shewalkar,88888888
4497,Aditya Mishra,111111111
4498,Aditya,111111111

编辑:

用于获取阵列中的所有移动号码。你可以这样做。

my @MobileNumbers;
my $mobileNumberQuery = "select ConsumerMobNo from consumeruser";
my $sth = $dbh->prepare($mobileNumberQuery);
$sth->execute();
while(my $row = $sth->fetch()){
   push @MobileNumbers, @$row;
}

有关访问结果的各种方法,请参阅perldoc DBI