a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Perl > 正文

使用perl實現拆分數據表(mysql)并遷移數據實例

2020-10-31 15:05:35
字體:
來源:轉載
供稿:網友

隨著業務量的增長,可能需要對表進行拆分來提高性能。

下面這個例子是將www.5lwq4hdr.cn的users表拆分成10個表ttlsa_user_0-ttlsa_user_9。

拆分遷移數據程序如下所示:

1.創建ttlsa_user_0-ttlsa_user_9表

復制代碼 代碼如下:

#!/usr/bin/perl
###################################
### author: www.5lwq4hdr.cn ###
### QQ群:232608061  ###
### E-mail:service@VeVB.COm ###
###################################

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.5lwq4hdr.cn ###
### QQ群:232608061  ###
### E-mail:service@VeVB.COm ###
###################################

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.5lwq4hdr.cn ###
### QQ群:232608061  ###
### E-mail:service@VeVB.COm ###
###################################

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-$_/@VeVB.COm”;
$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();

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产黄色免费小视频 | 中文字幕色 | 成年人在线视频播放 | 精品欧美一区二区三区在线观看 | 日韩欧美国产一区二区 | 日韩精品在线网站 | 国产精品国产三级国产aⅴ无密码 | 日韩在线中文字幕 | 91精品国产综合久久婷婷香蕉 | 天天摸天天看 | 精品亚洲一区二区三区 | 国产成人精品一区二区视频免费 | 最新国产精品精品视频 | 久久精品亚洲 | 国产精品视频播放 | 色婷婷综合久久久久中文一区二区 | 免费一二区 | 亚洲中午字幕在线观看 | 美国特级a毛片免费网站 | 欧美在线a | 一区二区三区亚洲 | www.日本三级| 成人精品视频99在线观看免费 | 成人免费视频网站 | 亚洲精品乱码久久久久久 | 欧美日韩一区在线 | 欧美亚洲一 | 国产一区 | 国产91亚洲| 91精品国产欧美一区二区 | 亚洲精品久久久久久久久久久 | 久久精品国产精品亚洲 | 国产精品二区三区在线观看 | 国产片一区二区三区 | 欧美国产日韩在线观看 | 午夜精品久久久 | 国产传媒日韩欧美 | 国产精品视频 | www.超碰| 丁香久久 | 中文字幕亚洲在线观看 |