从 Oracle 到 MySQL 的大数据迁移



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

  • 解析数据并将其转换为 CSV 格式。文件大小可能会降低到大约 35-40GB,因为每条记录中一半以上的信息是列名。 但是,我可能仍然必须使用数据库,因为我不能使用具有 6600 万条记录的 R 或 Excel。
  • 将数据迁移到 mysql 数据库。 不幸的是,我没有表的架构,我正在尝试重新创建查看数据的架构。 我可能必须将数据转储中的to_date()替换为str_to_date()以匹配MySQL格式。

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

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

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

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

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新