以下代码可以正常使用,但是在Excel中打开时所有数据都会显示在一行中(但不同列)。查询应该显示数据标题、第1行和第2行。此外,当我打开文件时,会出现一个警告,显示“您正在尝试打开的文件‘xxxx.csv’与文件扩展名指定的格式不同。请验证文件没有损坏......等。你想现在打开这个文件吗?”如何解决?这可能也是问题的原因。
简而言之,在导出csv时需要多行而不仅仅是一行。修复Excel错误。谢谢!
简而言之,在导出csv时需要多行而不仅仅是一行。修复Excel错误。谢谢!
#!/usr/bin/perl
use warnings;
use DBI;
use Text::CSV;
# local time variables
($sec,$min,$hr,$mday,$mon,$year) = localtime(time);
$mon++;
$year += 1900;
# set name of database to connect to
$database=MDLSDB1;
# connection to the database
my $dbh = DBI->connect("dbi:Oracle:$database", "", "")
or die "Can't make database connect: $DBI::errstr\n";
# some settings that you usually want for oracle 10
$dbh->{LongReadLen} = 65535;
$dbh->{PrintError} = 0;
# sql statement to run
$sql="select * from eg.well where rownum < 3";
my $sth = $dbh->prepare($sql);
$sth->execute();
my $csv = Text::CSV->new ( { binary => 1 } )
or die "Cannot use CSV: ".Text::CSV->error_diag ();
open my $fh, ">:raw", "results-$year-$mon-$mday-$hr.$min.$sec.csv";
$csv->print($fh, $sth->{NAME});
while(my $row = $sth->fetchrow_arrayref){
$csv->print($fh, $row);
}
close $fh or die "Failed to write CSV: $!";
cat
,vi
等)。 - user554546eg.well
是否存在,查询是否成功完成,是否返回了零行等。 - user554546use strict
。 - user554546