2010-01-25 6 views
2

아래 스크립트로 텍스트 파일을 구문 분석합니다.배열 데이터를 Perl로 MySQL에 어떻게 삽입 할 수 있습니까?

MySQL 테이블에 배열 데이터를 삽입하는 방법은 무엇입니까?

이미 Perl MySQL DBI 연결 방법을 배웠습니다. 그리고 로컬 MySQL DB에 성공적으로 연결할 수 있습니다. MySQL 커맨드 라인으로 테이블을 생성 할 수 있습니다.

#!C:\Perl\bin\perl.exe 
use strict; 
use warnings; 

while (<DATA>) { 
    my @rocks = split(/\s+/, $_); 

    foreach my $rock (@rocks) { 

    $rock = "\t$rock "; # put a tab in front of each element of @rocks 

    $rock .= "\n"; # put a newline on the end of each 

    print $rock ; 
    } 
} 

__DATA__ 
A B C D 
E F G H 

은 내가 테이블 찾아 결과를 원한다. `@의 rocks`은 다음과 같습니다

 
     Item1 Item2 Itme3 Item4 

     A  B  C  D 

     E  F  G  H 
+1

여러분의 의견은 코드와 동기화되지 않습니다? 변수 이름은 독자에게 놓여있다 :'$ array'는 예상 할 수있는 배열 참조가 아니다. 플러스 : **'s/talbe/table /'** –

+0

안녕하세요 신안, 나는 내 게시물을 수정했습니다. 좋은 의견을 주셔서 감사합니다. –

답변

8
use strict; 
use warnings; 
use DBI; 

my $dbh = DBI->connect(
    'DBI:mysql:database=test;host=localhost', 
    'root', 
    'YOUR_PASSWORD', 
    { RaiseError => 1, AutoCommit => 1 }, 
); 

my $sql = 'INSERT INTO foo (Item1,Item2,Item3,Item4) VALUES (?,?,?,?)'; 
my $sth = $dbh->prepare($sql); 

while (<DATA>){ 
    chomp; 
    my @vals = split /\s+/, $_; 
    $sth->execute(@vals); 
} 

__END__ 
A B C D 
E F G H 
+0

안녕하세요, 아주 잘 작동합니다. 'RaiseError => 1, AutoCommit => 1'에 대해 더 많은 불만을 주시겠습니까? 이해할 수 없습니다. 고맙습니다. –

+5

@Nano HE : 매뉴얼 http://search.cpan.org/perldoc?DBI를보십시오. 모든 것이 거기에 설명되어 있습니다. –

관련 문제