注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

lazydba

hello

 
 
 

日志

 
 

perl dbi dump test  

2010-03-19 17:24:42|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
#!/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。

  评论这张
 
阅读(113)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017