从Oracle到MySQL的大数据迁移

时间:2014-04-06 05:13:13

标签: mysql sql bigdata database-migration

我从一家零售商那里收到了超过100GB的数据和6700万条记录。我的目标是做一些市场篮子分析和CLV。此数据是来自其中一个包含70列的表的直接sql转储。我试图找到一种从这些数据中提取信息的方法,因为在小型笔记本电脑/台式机设置中管理自己变得非常耗时。我考虑了以下选项

  • 解析数据并将其转换为CSV格式。文件大小可能降至35-40GB左右,因为每个记录中超过一半的信息是列名。但是,我可能仍然需要使用数据库,因为我无法使用R或Excel以及6600万条记录。
  • 将数据迁移到mysql db。不幸的是,我没有表格的架构,我试图重新创建查看数据的架构。我可能必须将数据转储中的to_date()替换为str_to_date()以匹配MySQL格式。

有没有更好的方法来处理这个问题?我需要做的就是通过运行一些查询从sql转储中提取数据。 Hadoop等是选项,但我没有基础设施来设置集群。我考虑使用mysql,因为我有存储空间和一些内存。

假设我进入MySQL路径,我将如何导入数据?我考虑以下其中一个

  • 使用sed并将to_date()替换为适当的str_to_date()内联。请注意,我需要为100GB文件执行此操作。然后使用mysql CLI导入数据。
  • 编写python / perl脚本,它将读取文件,转换数据并直接写入mysql。

什么会更快?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

在我看来,编写脚本会更快,因为你将跳过SED部分。

我认为您需要在单独的PC上设置服务器,并从笔记本电脑运行脚本。

还可以使用tail来更快地从这个大文件的底部获取一个部分,以便在你在这个100GB文件上运行它之前在该部分上测试你的脚本。

答案 1 :(得分:0)

我决定选择MySQL路径。我创建了查看数据的模式(必须增加一些列大小,因为数据中存在意外的变化),并使用MySQLdb模块编写了一个python脚本。在我的2011 MacBook Pro上以4小时40分钟完成导入,在6700万条记录中有8154个失败。这些失败主要是数据问题。客户端和服务器都在我的MBP上运行。

@kpopovbg,是的,编写脚本更快。谢谢。