2011-04-27 88 views

回答

1

我同意斯蒂芬所说的,但你可以通过类似的技术来实现它。但是你必须创建更详细的查询。就像你可以做一些事情:

INSERT INTO table1(field1, field2,...) SELECT field4,field1,... FROM table1; 

很明显,你必须这样做,以正确的顺序,这IMO是一个很好的方法,所以你可以创建复杂的查询连接等

2

我认为更好的方法是使用ETL软件。

根据Wikipedia

提取,转换和加载(ETL)是在数据库使用一个过程,其涉及:

  • 从外部来源
  • 转化以适合业务需要(提取数据其中可以包括质量等级)
  • 将其加载到最终目标(数据库或数据仓库)
2

您正在讨论提取,转换,加载(ETL)脚本。

从非规范化数据到规范化数据是地狱。我希望你做相反 - 归到非规范化 - 这是这样的:

写一个shell脚本:

  1. 转储第一个数据库:mysqldump olddb >dump.sql
  2. 将其加载到一个干净的新数据库:mysql newdb <dump.sql
  3. 编写一堆CREATE TABLE AS SELECT ...命令并通过mysql运行它们 以创建非规格化数据的 。
  4. 放下你不关心的表。

将非规范化数据转换为规范化非常困难,需要一种特定于您所拥有的数据集的方法。