gpt4 book ai didi

mysql - 在perl中将csv上传到mysql

转载 作者:行者123 更新时间:2023-11-29 23:46:32 26 4
gpt4 key购买 nike

我是 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 则应跳过该行。意味着所有手机号码都应该与现有数据进行检查,如果它已经在数据库中,则该行不应插入数据库中,其余行不应插入数据库中。

最佳答案

您可以检查行的计数以查看数据是否已存在,然后继续执行下一条语句(如果存在)。该实现是针对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 了解访问结果的各种方式。

关于mysql - 在perl中将csv上传到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25904294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com