自从第一次将那个.net的导医系统改版为php,并将其数据也导入到新系统后,我这次是第三次做类似的数据转移的东西了,第二次是集团网站,也是.net的,不过是sqlsever的数据库,改版为帝国php+mysql,同样的要将数据库导过来,并且网站功能,文章路径等等,都保证和原来不变,就是这个www.rjtnb.com这个网站,第二个难度是最大的,这次的这个是网站改版,但是因为原来文章收录比较多,所以要导入原来的数据,并且保持文章路径不变。这次就是数据量比较大,6w多文章,但是难度相比前两次要简单。
因为这次也是php做的网站,不过是一个类似tp的框架写的,mysql的数据库,我就可以根据现在使用的帝国文章模型的规则,新建一个数据表和模型,这样不影响以后本系统使用,再对应的建栏目,然后分析路径规则,导入即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
<?php exit; set_time_limit(0); $dbHost = 'localhost';//服务器 $dbUser = 'root';//用户名 $dbPwd = '123456';//密码 $con = mysql_connect($dbHost,$dbUser,$dbPwd); if(empty($con)){ echo '连接服务器失败'; } mysql_query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary",$con); $conn = mysql_select_db('tp',$con); if(empty($conn)){ echo '选择数据库失败'; } $classid = array( '8' => '33', '16' => '34', '19' => '35', '22' => '36', '27' => '37', '42' => '38', '58' => '39', '73' => '40', '81' => '41', '82' => '42', '85' => '43', '86' => '44', '87' => '45', '235' => '46', '240' => '47', '244' => '48', '250' => '49', '253' => '50', ); $classpath = array( '8' => '/aboutus/article/', '16' => '/news/article/', '19' => '/class/article/', '22' => '/dept/article/', '27' => '/bfz/article/', '42' => '/tnbxt/article/', '58' => '/jkcs/article/', '73' => '/tslf/article/', '81' => '/ljtnb/article/', '82' => '/xjsb/article/', '85' => '/xtjc/article/', '86' => '/tnbclub/article/', '87' => '/jzzn/article/', '235' => '/tnblx/article/', '240' => '/2011/article/', '244' => '/taiwan/article/', '250' => '/school/article/', '253' => '/kfbl/article/', ); $sql = "select `id`,`title`,`content`,`addtime`,`updatetime`,`key`,`intro`,`classid` from `cms_article` where 1 order by id asc"; $query = mysql_query($sql); while($rs = mysql_fetch_array($query)){ //dump($rs); $cid = $classid[$rs['classid']]; $data1 = array( 'id' =>$rs['id'], 'classid' =>$cid, 'ttid' =>0, 'onclick' => 1, 'plnum' => 0, 'totaldown' => 0, 'filename' => $rs['id'], 'userid' =>1, 'username' => 'manage', 'firsttitle' => 0, 'isgood' => 0, 'ispic' => 0, 'istop' => 0, 'isqf' => 0, 'ismember' => 0, 'truetime' => $rs['addtime'], 'lastdotime' => $rs['updatetime'], 'havehtml' => 0, 'groupid' => 0, 'userfen' => 0, 'titleurl' => $classpath[$rs['classid']].$rs['id'].'.html', 'stb' => 1, 'fstb' => 1, 'restb' => 1, 'keyboard' => $rs['key'], 'title' => $rs['title'], 'newstime' => $rs['addtime'], 'smalltext' => $rs['intro'], 'diggtop' => 0, ); insert('phome_ecms_news_old',$data1); $data2=array( 'id' =>$rs['id'], 'classid' =>$cid, 'dokey' =>1, 'newstempid' => 0, 'closepl' => 0, 'haveaddfen' => 0, 'newstext' => $rs['content'], ); insert('phome_ecms_news_old_data_1',$data2); $data3=array( 'id' =>$rs['id'], 'classid' =>$cid, 'checked' =>1, 'newstime' => $rs['addtime'], 'truetime' => $rs['addtime'], 'lastdotime' => $rs['updatetime'], 'havehtml' => 0, ); insert('phome_ecms_news_old_index',$data3); } function dump($s){ echo '<pre>'; var_dump($s); echo '</pre>'; } function insert($table,$data=array()){ $keys=array_keys($data); $z = "`".implode("`,`",$keys)."`"; $v = "'".implode("','",$data)."'"; $sql = "insert into `$table` ($z) values($v)"; mysql_query($sql); } |
上面是代码,这个是帝国7.0的,只是让大家参考一下,其实原理很简单,不过就是要对自己的系统非常熟悉,数据表的字段结构等等,然后就是要分析目标数据库,其实并没有什么太难的。对了,前端时间,我们的一个网站不知道什么原因,从某个日期以后的数据全部没有了,但是页面还在,也就是数据库出了问题,但是帝国生成静态文件,所以还能访问到,我就利用采集,采集自己的文章,赛选出那个日期以后的,并且根据规则,让其路径和原来文章已有的路径保持不变,但是id肯定是变了,帝国的采集是这样的,他会想将信息和每个文章的目标网址保存在一个临时表里,然后我们采集完,留下要导入的信息,然后从数据表利用sql语句替换他的一个用不到但是要导入系统的字段为目标网址(比如ftitle副标题等),然后导入,然后我们可以根据这个字段,用sql或者程序修改
程序本天成,妙手偶得之!我们只是代码的搬运工!
转载请注明:http://www.521php.com/archives/1629/