如何从现有的单表数据库中填充合理的多表 MySQL 数据库?
Posted
技术标签:
【中文标题】如何从现有的单表数据库中填充合理的多表 MySQL 数据库?【英文标题】:How do I populate a rational multi-table MySQL database from an existing one table database? 【发布时间】:2010-11-09 17:28:46 【问题描述】:基本上有许多巨大的分隔文件,我知道我可以将它们作为表导入,但我需要将这些数据映射到现有的合理多表 mysql 数据库。数据类型不应该有任何冲突,但我对此很陌生,所以请指出我应该注意的任何事情。很明显,在我知道它可以工作之前,我也不会在生产中运行它。
不能 100% 确定 *** 是提出数据库问题的正确位置,但我找不到任何其他更适合的 Stack Exchange。
在 SuperUser 上发布此 question 以寻找 GUI 来执行此操作,但我准备编写此代码以完成工作。因此没有目标语言,只要求数据库是 MySQL。
另外,发现了这个处理 MS-SQL 的 SSIS 的 *** Q/A(由于成本,我不打算使用它,但所面临的内容和问题与它看起来的性质相同。)- Loading Multiple Tables using SSIS keeping foreign key relationships
【问题讨论】:
【参考方案1】:我建议使用 Pentaho Business Intelligence 包中的 ETL(提取翻译加载)工具。它有一点学习曲线,但它会完全满足您的需求。他们的 ETL 工具被称为 Kettle,一旦你掌握了它,它就会变得非常强大。
Pentaho 有两个版本,一个有免费试用的企业版,一个是免费的社区版。社区版功能强大,但您也可以试一试企业版。
这里有一些链接
Pentaho Community Edition Site
Kettle Site
Pentaho Enterprise Site
更新:多表输出
转换的关键步骤之一将是combination lookup-update。此步骤检查给定表以查看数据流中的记录是否存在,如果不存在则插入新记录。无论是新记录还是旧记录,它都会将该记录中的关键字段附加到您的数据流中。随着您的继续,您将在将数据导入相关表时将这些键用作外键。
【讨论】:
@r-dub:谢谢 是否可以自动化 Pentaho 的 ETL 过程(Kettle),这意味着我创建一个数据转换工作流,然后让它作为服务运行,或者每 XX 分钟运行一次?此外,在寻找一种方法来做到这一点时,到目前为止,我还没有看到让 Kettle 处理将表映射到现有多表数据库的方法。这意味着它处理配对表之间的关系以及所述表之间的相关数据规范化。我查看了文档和相关书籍的 TOC,但找不到任何关于使用 Kettle 执行此操作的信息;在下一条评论中链接到。 水壶文档: wiki.pentaho.com/display/EAI/… 水壶书: packtpub.com/toc/… 您可以使用诸如 cron 或任务调度程序之类的东西来运行任务。此外,当涉及多个表时,您应该没有任何问题。当您将行添加到“***”表时,您会将它们的主键附加到您的数据集中,然后在填充子表时将其用作外键。 @r-dub: +2, plus selected as answer... 很酷,谢谢 - 只是想确定一下,选择您作为答案,感谢您的快速回复! 我看一下并尝试给你一个示例转换以上是关于如何从现有的单表数据库中填充合理的多表 MySQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章
阶段3 1.Mybatis_09.Mybatis的多表操作_2 完成account表的建立及实现单表查询