Perl과 DBI 모듈을 사용하여 SQL Server 데이터베이스에서 데이터를 읽으려고합니다. 내 의도는 데이터를 읽고 텍스트 파일 (쉼표로 구분)로 인쇄하는 것입니다. 나는이 작업을 수행 할 때, 나는 결과를 다음과 같이 얻을 :배열 다듬기 (DBI로 채움)
var1,var2,var3
40406,20 ,783
50230,78 ,680
50230,78 ,680
50230,78 ,680
50230,78 ,680
그래서 두 번째 변수 데이터와 쉼표 사이에 공백이 있습니다. 나는 아래 코드를 사용하여 이것을 다듬 으려고했으나 작동하지 않았다. 해당 공백을 제거하기 위해 코드를 수정해야합니까?
내 코드는 여기에 있습니다 :
#!/bin/perl
use warnings;
use strict;
use DBI;
sub trim;
my $dbs = "dbi:ODBC:DRIVER={SQL Server};SERVER={xxxx}";
my ($username, $password) = ('un', 'pwd');
my $dbh = DBI->connect($dbs, $username, $password)
or die "Can't connect to $dbs: $DBI::errstr";
my $sth = $dbh->prepare("select var1, var2, var3 from db.dbo.table")
or die "Can't prepare statement: $DBI::errstr";
$sth->execute();
my $outfile = 'temp.txt';
open OUTFILE, '>', $outfile or die "Unable to open $outfile: $!";
print OUTFILE join(",", @{$sth->{NAME}}), "\n";
while (my @re = $sth->fetchrow_array) {
print OUTFILE join(",", trim(@re)), "\n";
}
close OUTFILE;
$sth->finish();
$dbh->disconnect();
############## subroutines ##################
sub trim($) {
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
}
당신이 새로운 것이므로 표준 SO 에티켓을 알려 드리겠습니다. 1.- 상향 회답을하고, 특히 그들이 원했던 것이라면 (나쁜 답변을 downvote) 2.- 답을 추가하는 대신 질문을 수정하십시오. 포럼이 아닙니다. 다행이야! –
Vinko를 에코하여 답변을 수락하고 답변으로 게시 한 답변을 삭제하는 것이 좋습니다. –