首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL迁移脚本帮助

MySQL迁移脚本帮助
EN

Stack Overflow用户
提问于 2009-10-20 02:09:18
回答 1查看 1K关注 0票数 2

我正在工作的网站,列出了各种餐厅的目录,目前正在切换到一个较新的CMS。我遇到的问题是,两个CMSes表示餐馆数据的方式不同。

旧CMS

交叉引用数据库,因此它可以为这样的示例列出一个条目:

ID / FieldID / ItemID / data

3/1/6/123号福街

4/2/6/律师

引用FieldID 1为街道,FieldID 2为城市的引用表。

另一个引用表将ItemID 6引用为美味餐厅。

新CMS

当我设置一个示例列表时,数据库在新CMS上的方式是所有的直接行,没有交叉引用。因此,同一家餐厅的数据将是:

ID /姓名/街道/城市

3/美食餐厅/福街123号/酒吧

大约有2,000个餐厅列表,所以从SQL行数据大小来看,这并不是一个很大的数目,但是当然,它足以不考虑手工重新输入所有的餐厅列表。

我有一些想法,但这将是非常肮脏和需要一段时间,我不是一个MySQL专家,所以我在这里有一些想法,我应该如何处理它。

感谢那些能帮忙的人。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-20 02:17:52

您可以多次对数据表进行连接,以获得如下内容:

代码语言:javascript
运行
复制
insert into newTable
select oldNames.ItemID,
       oldNames.Name,
       oldStreets.data,
       oldCities.data
from   oldNames
    inner join oldData as oldStreets on oldNames.ItemID = oldStreets.ItemID
    inner join oldData as oldCities on oldNames.ItemID = oldCities.ItemID
    inner join oldFields as streetsFields 
        on oldStreets.FieldID = streetsFields.FieldID
        and streetsFields.Name = 'Street'
    inner join oldFields as citiesFields 
        on oldCities.FieldID = citiesFields.Field
        and citiesFields.Name = 'City'

你没有提供所有表的名字,所以我编了一些名字。如果您有更多需要提取的字段,扩展这种查询应该非常简单。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1592114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档