#!/user/bin/perl
use strict;
use DBI;
sub get_mysql_connection {
??? my $ip_addr = shift;
??? my $port = shift;
??? my $user = shift;
??? my $pass = shift;
??? my $str_conn = "dbi:mysql:database=xxx;host=%s;port=%s";
??? my $str_conn2 = sprintf $str_conn, $ip_addr, $port;
??? print "[debug] connect to mysql $str_conn2\n";
??? my $mydb = DBI->connect(
??????? $str_conn2,
??????? "$user", "$pass") or die "Connect to oracle database error:". DBI->errstr;
??? $mydb->{FetchHashKeyName} = 'NAME_lc';
??? $mydb->{AutoCommit} = 0;
??? $mydb->do("set names gbk");
??? return $mydb;
}
sub get_result_set {
??? my $dbconn = shift;
??? my $sql = shift;
??? my $stmt = $dbconn->prepare($sql);
??? $stmt->execute();
??? return $stmt;
}
sub do_test2 {
??? my $dbconn = &get;_mysql_connection("127.0.0.1", 3306, "user", "password");
??? my $sql = "select * from a_table";
??? open OUT, ">/tmp/tmp_test.csv";
??? my $rs = &get;_result_set($dbconn, $sql);
??? while (my @row = $rs->fetchrow_array()) {
??????? my $row_1 = join ",", @row;
??????? print OUT "$row_1\n";
??? }
??? $dbconn->disconnect();
}
&do;_test2();
测试一下,100万记录的表,导成文件花了10几秒钟,生成的文件100M。