博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP自动分表程序
阅读量:6253 次
发布时间:2019-06-22

本文共 2335 字,大约阅读时间需要 7 分钟。

http://blog.zol.com.cn/2210/article_2209590.html

/**

 * 分表程序
 *
 * @author Shen Xi shen.xi@zol.com.cn
 * @date 2010-08-19
 */
set_time_limit(0);
$con = mysql_connect("127.0.0.1","root","111111");#创建数据库连接
mysql_select_db ("test",$con);#选择连接数据库“test”
mysql_query("set names gbk");#设置获取数据得字符集
$slctTable = "tb_test";
#获取被分表结构
$sql = "show create table $slctTable";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$createTable = $row['Create Table'];
//echo "$createStr
";
#获取被分表字段名
$field = mysql_list_fields("test",$slctTable,$con);
$filedNum = mysql_num_fields($field);
$fieldStr = "";
for($i=0;$i < $filedNum;$i++){
    $fieldStr.= "`". mysql_field_name($field, $i)."`,";
}
if(strlen($fieldStr) == 0){
    echo "获取表字段有误!";
    exit;
}
$fieldStr = "(".substr($fieldStr,0,-1).")";
//echo "$fieldStr
";
//exit;
 #查找最大用户id
 $sql = "SELECT max(id) as maxid
         FROM  $slctTable";
 $result =mysql_query($sql);
 $row = mysql_fetch_row($result);
 
 $maxid = (int)$row[0];
// var_dump($maxid);
 //exit;
 if($maxid > 1){
     $count = ceil($maxid / 1000);
 }else{
     echo "用户最大id有误";
     exit;
 }
 $per = 500;#每次取得的记录条数
 $prefix = "tb_test";
 for($i=0;$i<=$count;$i++){
     
     $table = $prefix.$i;
    #生成创建新表的sql语句
    $createStr = str_replace("CREATE TABLE `$slctTable`","CREATE TABLE IF NOT EXISTS `$table`",$createTable);
    $filehandle = fopen ($table.".sql", "a+");
    fwrite($filehandle, $createStr."\r\n");
//    mysql_query($createStr);
     $sql="SELECT COUNT(*) AS num
             FROM $slctTable where CEILING(id / 1000)=$i";
    $result =mysql_query($sql);
    $row = mysql_fetch_row($result);
    
    $num = (int)$row[0];
     $maxNum= ceil((int)$num / $per);
     
     for($j=0;$j<$maxNum;$j++){
         $lmt = $j * $per;
         if($lmt <= (int)$num){
             $sql = "select * from $slctTable where CEILING(id / 1000)=$i order by id limit $lmt,500";
//             fwrite($filehandle, $sql."");
            $inStr="REPLACE INTO ".$table." ".$fieldStr." VALUES";
//            fwrite($filehandle, $inStr."\r\n");
            $result = mysql_query($sql);             
             if($result){
                 $value="";
                 while ($row = mysql_fetch_row($result)){
                     $value.= "(";
                     for($n=0;$n < $filedNum;$n++){
                         $value.="'".addslashes($row[$n])."',";
                     }
                     if(strlen($value)>2){
                         $value = substr($value,0,-1)."),\r\n";
                     }
                 }
                 if(strlen($value)>2){
                     $value = substr($value,0,-3)."";
                 }
                 $inStr = $inStr.$value;
//                 echo $inStr."\r\n";
//                 mysql_query($inStr);
                 fwrite($filehandle, $inStr);                 
             }
//             fclose($filehandle);
//             exit;
         }else{
             break;
         }
     }
     fclose($filehandle);
 }
?>

 

 

转载地址:http://ugusa.baihongyu.com/

你可能感兴趣的文章
Hadoop 分片、分组与排序
查看>>
使用Windows8开发Metro风格应用一
查看>>
android尺子的自定义view——RulerView
查看>>
将博客搬至CSDN
查看>>
leetcode43
查看>>
直接在安装了redis的Linux机器上操作redis数据存储类型--set类型
查看>>
016——数组(十六)usort uasort uksort
查看>>
PyQt5+requests实现车票查询工具
查看>>
文件下载界面
查看>>
?:,reverse,vector的基本小结
查看>>
1.2 最基本的数据库连接
查看>>
bzoj4557
查看>>
C# 实验感悟WPF
查看>>
解决Win7 下小问题
查看>>
day25-3获取指定字符串中,大写字母、小写字母、数字的个数
查看>>
[转载] 百度上传&下载脚本
查看>>
Yii framwork - Url Manager
查看>>
为什么Facebook要将视频从Flash全面迁移到HTML5?
查看>>
poj 1149 PIGS
查看>>
mysql学习笔记--数据库视图
查看>>