Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从现有的单表数据库填充rational多表MySQL数据库?_Mysql_Database_Etl - Fatal编程技术网

如何从现有的单表数据库填充rational多表MySQL数据库?

如何从现有的单表数据库填充rational多表MySQL数据库?,mysql,database,etl,Mysql,Database,Etl,基本上有许多巨大的分隔文件,我知道我可以作为表导入,但我需要将这些数据映射到现有的rational多表MySQL数据库。应该不会与数据类型有任何冲突,但我对这一点非常陌生,所以请指出我应该关注的任何内容。很明显,在我知道它有效之前,我也不会在生产中运行它 不是100%确定stackoverflow是询问数据库问题的正确位置,但我找不到其他更适合的堆栈交换 在超级用户上发布了这篇文章,寻找一个GUI来完成这项工作,但我准备编写这篇文章,因为它完成了这项工作。因此,没有目标语言,只要求数据库是MyS

基本上有许多巨大的分隔文件,我知道我可以作为表导入,但我需要将这些数据映射到现有的rational多表MySQL数据库。应该不会与数据类型有任何冲突,但我对这一点非常陌生,所以请指出我应该关注的任何内容。很明显,在我知道它有效之前,我也不会在生产中运行它

不是100%确定stackoverflow是询问数据库问题的正确位置,但我找不到其他更适合的堆栈交换

在超级用户上发布了这篇文章,寻找一个GUI来完成这项工作,但我准备编写这篇文章,因为它完成了这项工作。因此,没有目标语言,只要求数据库是MySQL

此外,我还发现了这个stackoverflow Q/A,它处理MS-SQL的SSI(由于成本原因,我不打算使用它,但它的内容和面临的问题与它看起来的性质相同)

我建议使用软件包中的ETL(提取-翻译-加载)工具。它有一点学习曲线,但它会完全满足你的要求。他们的ETL工具被称为Kettle,一旦掌握了窍门,它将非常强大

Pentaho有两个版本,一个是免费试用的企业版,另一个是免费的社区版。社区版功能强大,但您也可以对企业版进行测试

这里有一些链接

更新:多个表输出


在你的转变过程中,一个关键的步骤将是。此步骤检查给定的表以查看数据流中的记录是否存在,如果不存在,则插入新记录。无论是新记录还是旧记录,它都会将该记录中的键字段追加到数据流中。继续操作时,在将数据导入相关表时,您将使用这些键作为外键。

@r-dub:感谢您能够自动化Pentaho的ETL过程(Kettle),这意味着我创建了一个数据转换工作流,然后将其作为服务运行,或者每XX分钟运行一次?另外,在寻找实现这一点的方法时,到目前为止,我还没有看到将一个表映射到现有多表数据库的Kettle句柄;这意味着它处理表之间的配对关系以及所述表之间数据的相关规范化。我已经查阅了文档和相关书籍的TOC,但找不到任何关于使用Ketter进行此操作的信息;在下一条评论中链接到。Kettle文档:Kettle BOOK:您可以使用cron或任务调度器之类的工具运行任务。此外,当涉及多个表时,您不应该有任何问题。将行添加到“顶级”表时,您将把它们的主键添加到数据集中,然后在填充子表时将其用于外键。@r-dub:+2,加上选择作为答案。。。酷,谢谢——只是想确定一下,选择你作为答案,谢谢你的快速回复!我将看一看,并尝试给您一个示例转换