【问题标题】:Big data migration from Oracle to MySQL从 Oracle 到 MySQL 的大数据迁移
【发布时间】:2014-04-06 05:13:12
【问题描述】:

我从一家零售商那里收到了超过 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 的文件执行此操作。然后使用mysql CLI 导入数据。
  • 编写 python/perl 脚本来读取文件、转换数据并直接写入 mysql。

什么会更快?感谢您的帮助。

【问题讨论】:

    标签: mysql sql bigdata database-migration


    【解决方案1】:

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

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

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

    【讨论】:

    • 发现gshufshuf从文件中获取随机样本更有效。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 2011-08-25
      • 2016-08-22
      • 2014-05-02
      • 2010-09-24
      • 1970-01-01
      • 2014-07-05
      • 2011-07-30
      • 1970-01-01
      相关资源
      最近更新 更多