首页 > php教程 > php手册 > 正文

phpcms中实现不同结构数据库转换

php中文网
发布: 2016-05-25 16:46:28
原创
1523人浏览过

需求是把之前网站的一个mssql2000的数据库转换成mysql数据库,并且新的网站采用不同的程序,因此还要把数据库中的数据根据字段的不同,和字段数据规则的不同进行转换。

1.不同数据库类型直接的数据库转换

navicat是个很好的数据库管理软件,可以用它进行不同类型数据库直接的转换,以下链接详细说明如何用navicat将mssql2000数据库转换成mysql数据库。

2.不同结构数据库之间的数据转换

不同数据库结构之间的数据转换存在几个问题,①字段不同,甚至无法一一对应 ②字段格式不同,要转换成目标数据库字段的设计格式 ③sql语句结合php程序转换

立即学习PHP免费学习笔记(深入)”;

这是把之前一个downplus下载系统的数据库转换成phpcms的数据库。

直接上代码,有这方面需求的研究代码吧。

站点1 软件站

①导入所有软件到软件表v95_soft

insert into v95_soft(id,catid,title,soft,soft_name,pinyin,thumb,keywords,size,start,inputtime,updatetime,auth,property)

select softid,softclassid,seotitle,appname,softname,softphoneticism,IcoImage,softkeywords,softsize,softscore,

unix_timestamp(SoftInsertDate),unix_timestamp(softcreatedate),softlicence,softproperty 

from dp_softlist;

②写sql设status为99

update v95_soft set status=99;

③到后台更新全站url。然后更新title为空的,软件名称

update v95_soft set title=soft_name where title='';

④导入到v95_soft_date

insert into v95_soft_data(id,content,language,website,icon,softos) 

select softid,softintro,softlanguage,softauthorurl,IcoImage,softos 

from dp_softlist;

⑤执行php转换程序,导入下载地址

http://www.phprm.com/admin.php?m=admin&c=index&a=down

<?php
public function down() {
    set_time_limit(0);
    $sql = "select id from v95_soft_data ";
    $result = $this->db->query($sql);
    while ($r = mysql_fetch_assoc($result)) {
        //$softid = 11;
        $softid = $r['id'];
        $sql = "select fileurlname,fileurl,fileftpid from dp_softfiles where softid = $softid ";
        $downfile = $this->db->query($sql);
        $downfiles = array();
        while ($r = mysql_fetch_assoc($downfile)) {
            $isbigfile = 0;
            if (!$r['fileurlname']) {
                $sql = "select soft_name from v95_soft where id = $softid ";
                $result2 = $this->db->query($sql);
                while ($r2 = mysql_fetch_assoc($result2)) {
                    $soft_name = $r2['soft_name'];
                }
                $r['fileurlname'] = $soft_name;
            }
            if (12 == $r['fileftpid']) {
                $isbigfile = 1;
            }
            $downfiles[] = array(
                'fileurl' => $r['fileurl'],
                'filename' => $r['fileurlname'],
                'isbigfile' => $isbigfile
            );
        }
        $downfiles = array2string($downfiles);
        //var_dump($downfiles);exit;
        $sql = "update v95_soft_data set downfiles = '$downfiles' where id = $softid ";
        $this->db->query($sql);
    }
    echo 'OK';
}
?>
登录后复制

⑥软件单位和大小转换

update v95_soft set size=size/1000,unit='MB' where size>1000 and size

update v95_soft set size=size/1000000,unit='GB' where size>1000000;

⑦导入标签,到v95_keyword和v95_keyword_data

insert into v95_keyword(id,keyword) select tagid,tagname from dp_tag;

update v95_keyword set siteid=1;

⑧执行php转换程序,匹配标签到关键字

http:///admin.php?m=admin&c=index&a=transe

php代码:

<?php
public function transe() {
    set_time_limit(0);
    $sql = "select tagid,softidlist from dp_tag";
    $result = $this->db->query($sql);
    while ($r = mysql_fetch_assoc($result)) {
        //var_dump($r);exit;
        $tags = $r['softidlist'];
        $tags = explode(",", $tags);
        $tags = array_filter($tags);
        //var_dump($tags);exit;
        $tagid = $r['tagid'];
        //echo $tagid;exit;
        foreach ($tags as $tag) {
            $sql = "insert into v95_keyword_data(tagid,siteid,contentid) values('$tagid','1','$tag')";
            $this->db->query($sql);
        }
    }
    echo 'OK';
}
?>
登录后复制

调整格式

update v95_keyword_data set contentid=CONCAT(contentid,'-12');

⑩点击率

insert into v95_hits(hitsid,catid) select id,catid from v95_soft;

//可以不用转,太慢了

update v95_hits as a left join dp_softlist as b on a.hitsid=b.softid 

set a.weekviews=b.softweekhits,a.monthviews=b.softmonthhits,a.dayviews=b.softdayhits,a.views=b.softallhits;

 

update v95_hits set hitsid=concat('c-12-',hitsid);

十一 相关文章

http:///admin.php?m=admin&c=index&a=related (最后执行,很慢)

php代码:

<?php
public function related() {
    set_time_limit(0);
    $sql = "select id,keywords from v95_soft";
    $result = $this->db->query($sql);
    while ($r = mysql_fetch_assoc($result)) {
        $softid = $r['id'];
        $keywords = $r['keywords'];
        $keywords = explode(",", $keywords);
        $related = '';
        foreach ($keywords as $keyword) {
            $sql = "select softidlist from dp_tag where tagname='$keyword' ";
            $result2 = $this->db->query($sql);
            while ($r2 = mysql_fetch_assoc($result2)) {
                $related = $related . ',' . $r2['softidlist'];
            }
        }
        $related = explode(",", $related);
        $related = array_filter($related);
        shuffle($related);
        $related = array_slice($related, 0, 10);
        $related = implode("|", $related);
        $sql = "update v95_soft_data set relation = '$related' where id = $softid ";
        $this->db->query($sql);
    }
    echo 'OK';
}
?>
登录后复制

站点2 单机站

①由于类别不同,要先把原先类别改成现在的类别id

update downtb set ClassID=217 where ClassID=1;

update downtb set ClassID=218 where ClassID=2;

seacms影视管理系统
seacms影视管理系统

海洋影视管理系统(seacms,海洋cms)是一套专为不同需求的站长而设计的视频点播系统,灵活,方便,人性化设计简单易用是最大的特色,是快速架设视频网站首选,只需5分钟即可建立一个海量的视频讯息的行业网站。 海洋cms采用PHP+MYSQL架构,原生PHP代码带来卓越的访问速度和负载能力免去您的后顾之优。海洋cms支持一键转换原max的模板和数据,实现网站无缝迁移到新平台。众多人性化功能设计,超

seacms影视管理系统 116
查看详情 seacms影视管理系统

update downtb set ClassID=219 where ClassID=3;

update downtb set ClassID=220 where ClassID=4;

update downtb set ClassID=221 where ClassID=5;

update downtb set ClassID=222 where ClassID=6;

update downtb set ClassID=223 where ClassID=7;

update downtb set ClassID=224 where ClassID=8;

update downtb set ClassID=225 where ClassID=9;

update downtb set ClassID=226 where ClassID=10;

update downtb set ClassID=233 where ClassID=11;

②导入主表到v95_danji

insert into v95_danji(id,catid,title,thumb,soft_name,size,inputtime,updatetime,auth,language,downurl) 

select DownID,ClassID,SeoTitle,thumb,DownName,Sizes,unix_timestamp(addtime),unix_timestamp(addtime),

Shouquan,Languages,DownIntro1 from downtb;

③后台更新全站url,然后设status为99,没有seo标题的采用单机游戏名称

update v95_danji set status=99;

update v95_danji set title=soft_name where title='';

④大小单位转换,下载地址格式调整

update v95_danji set size=size/1000,unit='MB' where size>1000 and size

update v95_danji set size=size/1000000,unit='GB' where size>1000000;

update v95_danji set downurl=replace(downurl,'@@**@@本地下载','');

⑤修改下载地址

要判断单机游戏填写的地址

如果填写的

game=z1.9553.com

game2=z2.9553.com

以此类推

/admin.php?m=admin&c=index&a=downurl(废弃)

⑥导入到v95_danji_data

insert into v95_danji_data(id,content,gameid) select DownID,DownIntro,game_id from downtb;

⑦单机标签转换

1、新增单机站标签到v95_keyword表

insert into v95_keyword(id,keyword) select TagID+31616,TagName from tagtb;

update v95_keyword set siteid=2 where siteid=0;

2、执行php程序

此时记住当前v95_keyword中siteid为1的最大id,更改php程序,再填入keywords,执行

http:///admin.php?m=admin&c=index&a=danji

php代码:

<?php
public function danji() {
    set_time_limit(0);
    $sql = "select DownID,ToTagIDs from downtb";
    $result = $this->db->query($sql);
    while ($r = mysql_fetch_assoc($result)) {
        $id = $r['DownID'];
        $ToTagIDs = explode(",", $r['ToTagIDs']);
        $ToTagIDs = array_filter($ToTagIDs);
        foreach ($ToTagIDs as $key => $value) {
            $ToTagIDs[$key] = $value + 31682;
        }
        //var_dump($ToTagIDs);exit;
        foreach ($ToTagIDs as $tagid) {
            $sql = "select keyword from v95_keyword where id=$tagid ";
            $keywords = $this->db->query($sql);
            while ($r = mysql_fetch_assoc($keywords)) {
                $keyword[] = $r['keyword'];
            }
        }
        $new_keyword = implode(",", $keyword);
        $sql = "update v95_danji set keywords='$new_keyword' where id=$id";
        $this->db->query($sql);
        unset($keyword);
        unset($ToTagIDs);
    }
    echo 'OK';
}
?>
登录后复制

3、执行php程序

http:///admin.php?m=admin&c=index&a=danji2

php代码

<?php
public function danji2() {
    set_time_limit(0);
    $sql = "select id,keywords from v95_danji";
    $result = $this->db->query($sql);
    while ($r = mysql_fetch_assoc($result)) {
        $contentid = $r['id'];
        $keywords = $r['keywords'];
        $tags = explode(",", $keywords);
        foreach ($tags as $tag) {
            $sql = "select id from v95_keyword where keyword='$tag' and siteid=2";
            $id = $this->db->query($sql);
            while ($r = mysql_fetch_assoc($id)) {
                $id = $r['id'];
                $sql = "insert into v95_keyword_data(tagid,siteid,contentid) values('$id',2,'$contentid')";
                $this->db->query($sql);
            }
        }
        unset($tags);
    }
    echo 'OK';
}
?>
登录后复制

4、修改v95_keyword_data表siteid为2的contentid格式

update v95_keyword_data set contentid=CONCAT(contentid,'-14') where siteid=2;

⑧使点击率可用

insert into v95_hits(hitsid,catid) select CONCAT('c-14-',id),catid from v95_danji;


文章网址:

随意转载^^但请附上教程地址。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号