• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用perl实现拆分数据表(mysql)并迁移数据实例

    随着业务量的增长,可能需要对表进行拆分来提高性能。

    下面这个例子是将www.jb51.net的users表拆分成10个表ttlsa_user_0-ttlsa_user_9。

    拆分迁移数据程序如下所示:

    1.创建ttlsa_user_0-ttlsa_user_9表

    复制代码 代码如下:

    #!/usr/bin/perl
    ###################################
    ### author: www.jb51.net ###
    ### QQ群:232608061  ###
    ### E-mail:service@jb51.net ###
    ###################################

    use DBI;

    my $driver=”DBI:mysql”;
    my $from_database=”ttlsa”;
    my $from_user=”root”;
    my $from_password=”123456″;
    my $from_host=”localhost”;

    $from_dbh=DBI->connect (“$driver:$from_database:$from_host;user=$from_user;password=$from_password”) or die “cannot connect: “. DBI->errstr;

    for (0..9) {
    $sql=”CREATE TABLE `ttlsa_user_$_` (
    `uid` int(10) NOT NULL AUTO_INCREMENT,
    `email` varchar(50) NOT NULL,
    `passwd` varchar(40) NOT NULL,
    `user_name` varchar(20) NOT NULL,
    PRIMARY KEY (`uid`),
    UNIQUE KEY `email` (`email`),
    UNIQUE KEY `user_name` (`user_name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT”;
    $from_dbh->do($sql);
    }
    $from_dbh->disconnect();

    2.迁移数据

    复制代码 代码如下:

    #!/usr/bin/perl
    ###################################
    ### author: www.jb51.net ###
    ### QQ群:232608061  ###
    ### E-mail:service@jb51.net ###
    ###################################

    use DBI;

    my $driver=”DBI:mysql”;
    my $from_database=”ttlsa”;
    my $from_user=”root”;
    my $from_password=”123456″;
    my $from_host=”localhost”;

    $from_dbh=DBI->connect (“$driver:$from_database:$from_host;user=$from_user;password=$from_password”) or die “cannot connect: “. DBI->errstr;
    $from_dbh->do(“set names ‘utf8′”);
    $from_dbh->do(“set session autocommit=0″);
    $from_dbh->do(“set session unique_checks=0″);

    $max=600000;
    $step=10000;
    for ($i=1;$i $step_i=$i+$step;
    $sql=”select * from ttlsa_users where user_id>=$i and user_id $sth=$from_dbh->prepare($sql);
    $sth->execute;
    @value=();
    while ($row=$sth->fetchrow_hashref()) {
    $uid=$row->{uid};
    $email=$row->{email};
    $passwd=$row->{passwd};
    $user_name=$row->{user_name};
    $key=substr($user_id,-1);
    $value[$key].=”(‘$uid','$email','$passwd','$user_name'),”;

    }
    for (0..9) {
    chop($value[$_]);
    $sql=”insert into ttlsa_user_$_ (`uid`,`email`,`passwd`,`user_name`) values” . $value[$_];
    $from_dbh->do(“$sql”);
    }
    }
    $from_dbh->do(“set session autocommit=1″);
    $from_dbh->do(“set session unique_checks=1″);
    $sth->finish();
    $from_dbh->disconnect();

    3.附录

    如果没有那么多数据量,可以随意插入一些数据进行测试。下面提供一个插入数据的脚本。

    复制代码 代码如下:

    #!/usr/bin/perl
    ###################################
    ### author: www.jb51.net ###
    ### QQ群:232608061  ###
    ### E-mail:service@jb51.net ###
    ###################################

    use DBI;
    use Digest::SHA qw(sha1_hex);

    my $driver=”DBI:mysql”;
    my $from_database=”ttlsa”;
    my $from_user=”root”;
    my $from_password=”123456″;
    my $from_host=”localhost”;

    $from_dbh=DBI->connect (“$driver:$from_database:$from_host;user=$from_user;password=$from_password”) or die “cannot connect: “. DBI->errstr;
    $from_dbh->do(“set names ‘utf8′”);
    $from_dbh->do(“set session autocommit=0″);
    $from_dbh->do(“set session unique_checks=0″);

    for (1..100000) {
    $insert_sql=$from_dbh->prepare(“insert into ttlsa_users (email,passwd,user_name) values (?,?,?)”);
    $email=”auto-gre-$_\@jb51.net”;
    $data=”auto-gre-$_”;
    $passwd=sha1_hex($data);
    $user_name=”auto-gre-$_”;
    $insert_sql->execute($email,$passwd,$user_name);
    }

    $from_dbh->do(“set session autocommit=1″);
    $from_dbh->do(“set session unique_checks=1″);
    $insert_sql->finish();
    $from_dbh->disconnect();

    您可能感兴趣的文章:
    • MYSQL数据库数据拆分之分库分表总结
    • MySQL按指定字符合并以及拆分实例教程
    • MySQL截取和拆分字符串函数用法示例
    • MySQL 常见数据拆分办法
    • MySQL 表的垂直拆分和水平拆分
    上一篇:perl中使用ip138网站查询ip归属地脚本分享
    下一篇:perl实现检测服务器中的服务是否正常脚本分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    使用perl实现拆分数据表(mysql)并迁移数据实例 使用,perl,实现,拆分,数据表,