将数据从一个MySQL db导入另一个MySQL Db?

时间:2011-04-27 13:02:40

标签: php mysql sql ansi-sql

请告诉我如何将数据从一个MySQL Db导入另一个MySQL数据库。两个数据库的数据模式完全不同,第二个数据库是第一个数据库的规范化版本。

提前致谢

3 个答案:

答案 0 :(得分:2)

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

根据Wikipedia

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

  • 从外部来源提取数据
  • 将其转换为适合运营需求(可包括质量水平)
  • 将其加载到最终目标(数据库或数据仓库)

答案 1 :(得分:2)

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

从非规范化数据到标准化数据是很糟糕的。我希望你做的是反向 - 归一化到非规范化 - 这就是这样:

编写一个shell脚本:

  1. 转储第一个数据库:mysqldump olddb >dump.sql
  2. 将其加载到干净的新数据库中:mysql newdb <dump.sql
  3. 编写一堆CREATE TABLE AS SELECT ...命令并运行它们 通过mysql来创建 非规范化数据。
  4. 删除你不关心的任何表格。
  5. 将非规范化数据转换为规范化数据非常困难,需要一种特定于您拥有的数据集的方法。

答案 2 :(得分:1)

我同意斯蒂芬说的话,但是你可以用类似的技巧来实现它。但是你必须创建更详细的查询。你可以这样做:

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

显然你必须按照正确的顺序进行,IMO这是一个很好的方法,所以你可以用连接等创建复杂的查询。