我从其中一家零售商那里收到了超过 100GB 的数据,其中包含 6700 万条记录。我的目标是进行一些市场篮分析和 CLV。该数据是来自具有 70 列的表之一的直接 SQL 转储。我正在尝试找到一种方法从这些数据中提取信息,因为在小型笔记本电脑/台式机设置中进行 self 管理变得非常耗时。我考虑了以下选项
- 解析数据并将其转换为 CSV 格式。文件大小可能会降至 35-40GB 左右,因为每条记录中超过一半的信息是列名称。但是,我可能仍然需要使用数据库,因为我无法使用 R 或 Excel 来处理 6600 万条记录。
- 将数据迁移到mysql数据库。不幸的是,我没有该表的架构,我正在尝试重新创建查看数据的架构。我可能必须将数据转储中的
to_date()
替换为str_to_date()
以与 MySQL 格式匹配。
有没有更好的方法来处理这个问题?我需要做的就是通过运行一些查询从 sql 转储中提取数据。 Hadoop 等是选项,但我没有设置集群的基础设施。我正在考虑mysql,因为我有存储空间和一些空闲内存。
假设我进入MySQL路径,我将如何导入数据?我正在考虑以下其中一项
- 使用
sed
并用适当的内联str_to_date()
替换to_date()
。请注意,我需要对 100GB 文件执行此操作。然后使用mysql
CLI 导入数据。 - 编写 python/perl 脚本来读取文件、转换数据并直接写入 mysql。
什么会更快?感谢您的帮助。
最佳答案
我认为编写脚本会更快,因为您将跳过 SED 部分。
我认为您需要在单独的 PC 上设置服务器,并从笔记本电脑运行脚本。
还可以使用 tail 更快地从这个大文件的底部获取一部分,以便在这个 100GB 文件上运行脚本之前测试该部分的脚本。
关于mysql - 大数据从Oracle迁移到MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22890248/