IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    perl dbi dump test

    lazydba发表于 2010-03-19 17:24:42
    love 0
    #!/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。



沪ICP备19023445号-2号
友情链接