0

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

提前致谢

4

3 回答 3

2

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

从非规范化数据到规范化数据是地狱。我希望你正在做相反的事情 - 规范化到非规范化 - 就像这样:

编写一个 shell 脚本:

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

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

于 2011-04-27T13:35:49.803 回答
2

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

根据维基百科

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

  • 从外部来源提取数据
  • 对其进行改造以适应运营需求(包括质量水平)
  • 将其加载到最终目标(数据库或数据仓库)
于 2011-04-27T13:06:28.753 回答
1

我同意斯蒂芬所说的,但你可以用类似的技术来实现它。但是您必须创建更详细的查询。您可以执行以下操作:

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

显然,您必须以正确的顺序执行此操作,IMO 这是一种很好的方法,因此您可以使用连接等创建复杂的查询。

于 2011-04-27T14:35:12.117 回答