将SQL查询结果导出为CSV文件

时间:2012-05-22 21:38:33

标签: perl

如何将Oracle SQL查询结果重定向到驱动器上的外部CSV文件,同时将它们打印到perl的屏幕上

这是我打算做的事情

my $dbh =  DBI->connect('dbi:ODBC:Test2', 'XXX', 'XXXX') || die ("Connection Failed      \n");
$sql="select a,b from xxx";
my $sth = $dbh->prepare($sql);
$sth->execute();
my $dat;

while($ dat = $ sth-> fetchrow_hashref()){    打印(“$ dat-> {a}”,print(“$ dat-> {b}” * 在这里我得到的结果在屏幕上     }

**My main challenge is to get the results into a csv file on my local disk -- Any   help    would be appreciated.....**

1 个答案:

答案 0 :(得分:1)

我会使用CPAN模块 Text :: CSV 。该模块将处理所有CSV特定处理(例如引用)。

use Text::CSV;

my $csv = Text::CSV->new ( { binary => 1 } )  # should set binary attribute.
             or die "Cannot use CSV: ".Text::CSV->error_diag ();
open $fh, ">:encoding(utf8)", "my.csv";

。 。

while( $dat = $sth->fetchrow_hashref() ){ 
    print "$dat->{a} $dat->{b}\n";
    $csv->print ($fh, [ $dat->{a}, $dat->{b} ]);
}

。 。

close $fh or die "Failed to write CSV: $!";