国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Perl > 正文

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

2020-06-04 20:32:29
字體:
來源:轉載
供稿:網友

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

下面這個例子是將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.附錄

如果沒有那么多數據量,可以隨意插入一些數據進行測試。下面提供一個插入數據的腳本。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天台县| 雷波县| 福建省| 泾源县| 许昌县| 绍兴市| 克拉玛依市| 德庆县| 桃江县| 烟台市| 阆中市| 卓资县| 饶平县| 景谷| 上蔡县| 安顺市| 满城县| 鞍山市| 阳谷县| 巨野县| 长春市| 阿尔山市| 监利县| 呼玛县| 临漳县| 图们市| 安宁市| 盐池县| 永新县| 时尚| 金堂县| 太康县| 根河市| 榕江县| 平潭县| 松原市| 成都市| 拉孜县| 美姑县| 合川市| 聂拉木县|