2014-09-18 8 views
0

저는 Perl 프로그래밍 언어로 새로운 사람입니다. Csv 업로드를 mysql 데이터베이스에 작성하는 방법을 안내해 주실 수 있습니까?Csv가 Perl의 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 T가 이미 포함되어 있다고 가정합니다. 그 행은 건너 뛰어야합니다. 이미 데이터베이스에있는 행이 데이터베이스에 삽입 된 데이터베이스 번호 & 나머지를 데이터베이스에 삽입해서는 안되는 경우 모든 모바일 번호를 기존 데이터로 확인해야합니다.

답변

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을 참조하십시오.

+0

답장을 보내 주셔서 감사합니다. 배열이나 해시를 사용하면 매번 각 휴대 전화 번호를 선택할 필요가 없습니다. – user3639608

+0

죄송합니다. 나는 명확하게 u를 얻지 않는다. @ user3639608 – xtreak

+0

모든 레코드 삽입물에 대해 현재 휴대 전화 번호가 존재하는지 여부를 데이터베이스에 확인해야합니다. 하나의 쿼리가 모든 모바일 숫자와 상점을 배열 또는 해시로 가져 오도록 코드를 작성해야합니다. 삽입은 배열 또는 해시 값을 기반으로합니다. 배열 또는 해시에있는 경우 해당 행을 건너 뜁니다. – user3639608