将MySQL数据库中的数据转换为另一个结构略有不同的数据?

时间:2013-06-14 22:11:30

标签: mysql sql database mysqli migration

我对此做了一些研究,找不到很多初学者的入门资源,所以我在这里寻找一个基本的理解过程如何工作。我试图解决的问题是这样的:我想将数据从旧数据库移动到具有稍微不同结构的新数据库,可能在过程中稍微改变数据。没有深入细节......这样做的一般步骤是什么?

从我收集的内容中,我要么......

  • 手动编写大量SQL查询(eesh)
  • 使用一些复杂的工具,这可能对我正在做的事情有点过分

数据库中有很多数据,因此从SQL转储中编写INSERT查询似乎是一场噩梦。我正在寻找的是一种编写简单程序的方法,该程序插入像for each row in the table "posts", take the value of the "body" attribute and put it in the "post-body attribute of the new database这样的逻辑或类似的东西。我也在寻找像append a 0 to the data in the "user id" column then insert it in the new database这样的功能(只是一个例子,重点是略微改变数据)。

在我的脑海中,我可以很容易地构建迁移如何变得非常容易的逻辑(绝对不是这里的火箭科学)..但我不知道如何在计算机上实现这一点来迭代荒谬的数量没有手动操作的数据。这样做的一般过程是什么,初学者可以使用哪些工具?对于以前从未做过的人来说这是一个好主意吗?

编辑按要求,以下是我想要执行的突变示例:

旧数据库:表格“帖子”,其属性post_bodyvarchar 255。 新数据库:表“posts”,其属性body"text数据类型。

想要从旧版本中获取post-body并将其放入body新版本中。意识到它们是不同的数据类型,但它们在技术上都是字符串,应该可以转换,对吧?等等一堆这样的操作。

1 个答案:

答案 0 :(得分:2)

通常,数据库转换最耗时的步骤是理解旧结构和新结构,并在每个结构中建立字段的对应关系。

与此相比,编写相应SQL查询所需的时间非常短。

  

对于表“posts”中的每一行,取“body”属性的值并将其放入“新数据库的post-body属性”

INSERT INTO newdb.postattribute (id, attribute, value)
SELECT postid, 'post-body', body FROM olddb.post;

实际上,允许这种数据操作的工具是...... SQL!真的,这已经是一种非常高级的语言了。