I have this script in perl and it crashes. The database is probably million rows. How can I do this? Thanks
sub MYSQL_CREATE_CSV
{
my ($dbh, $tablename, $csvname) = @_;
my $mysql_tablename = $dbh->quote_identifier($tablename);
print "[INFO] EXTRACTING INFO FROM TABLE : $mysql_tablename\n";
my $sth1 = $dbh->prepare(qq|SELECT * FROM $mysql_tablename | );
$sth1->execute( );
open (FILE, ">$csvname") or die "[ERROR] $0 - cannot write to file : $! \n";
# EXTRACT COLUMN NAME
my @COLUMNNAME = @{$sth1->{NAME}};
my $temp = join (",",@COLUMNNAME);
print FILE $temp , "\n";
while ( my @row = $sth1->fetchrow_array( ) )
{
my $temp = join(",",@row);
print FILE $temp . "\n";
}
close FILE;
print "[INFO] \t\tCREATING FILE : $csvname \n" if (-e $csvname);
}
Try this line before
$dbh->prepare()This will tell MySQL do not load whole result in memory.