해시가 있으며 해당 값을 데이터베이스에 삽입하려고합니다. 해시는 다음과 같이 정의됩니다.Perl의 DBI가있는 열에 어떻게 해시 값을 삽입 할 수 있습니까?
my %hash = (
1 => 'First Word',
2 => 'Second Word is correct',
0 => 'Third word does not exist',
);
해시를 사용하여 데이터베이스에 값을 삽입하는 방법을 알지 못합니다. 내 질문에 this 질문과 비슷합니다. 그러나 그 대답 중 어느 것도 맞지는 않습니다. 나열된 답변 중 하나를 사용할 때 해시 값이 삽입되지 않고 대신 해시에 대한 참조 (예 : ARRAY(0x9e63b30)
)가 삽입됩니다. 하지만 내가 print Dumper @values
일 때 값이 인쇄되고 참조 값이 아닙니다.
값을 삽입하는 방법에 대한 제안이나 참조가 아닌 제안 사항은 무엇입니까? 그리고 question에 대한 답변에 나열된 솔루션에서 잘못된 점이 무엇입니까?
@values가 this 질문과 동일 정의 즉
는my @values = values %hash;
편집 : DB 구조 :
는T1 : 위의 SID에
sid sentence
1 First Word
2 Second Word is correct
0 Third word does not exist
해시의 keys
과 문장 values
입니다 해시 @values
참조 값이 삽입지고 삽입하는 동안, 다시
my @keys = keys %hash;
my @values = values %hash;
my $sth = $dbh->prepare("INSERT INTO T1(sid, sentence) VALUES (?,?);");
$sth->execute_array({},\@keys, \@values);
:
이것은 내가 (이 question에 대한 답변 중 하나입니다) 밖으로 시도하는 것이다.
편집 :
_ OUTPUT _
$VAR1 = 'First Word';
$VAR2 = 'Third word does not exist';
$VAR3 = 'Second Word is correct';
_ CODE _ 내가 다른 한편으로
my $x=0;
foreach my $file(@files){
if ($file =~ /regex/){
push(@{$hash{$x}}, "$1 $2 $3 $4 $5 $6 $7");
}
elsif ($file =~ /regex/){
push(@{$hash{$x}}, "$1 $2 $3 $4 $5 $6");
}
elseif ($file =~ /Hs_(.+)_(.+)_(.+)_(.+)_(.+)_W.+txt/){
push (@{$hash{$x}}, "$1 $2 $3 $4 $5");
}
$x++;
}
그 인접 질문에 대한 답변의 모든이 올바른지 (이 자습서에 액세스하기 위해 명령
를 사용). 데이터베이스를 업데이트하는 데 정말로 도움이 필요합니까? 아니면 Perl 표준 데이터 구조로 작업하는 데 도움이 필요합니까? – innaM
@Manni : 답변이 올바른 경우 참조 값이 실제 값 대신 db로 업로드되는 이유는 무엇입니까? – birdy
몇 가지 코드를 보여줍니다. 적어도 SQL 문과 execute 문. 그런 다음 데이터베이스에 관해 알려주십시오. 우리는 어떻게 그 값들이 당신의 DB에서 끝나길 원하는지 생각했습니다. 키가 행, 열 또는 둘 다 표시합니까? – innaM