我有一个 800mb 的制表符分隔文件,其中包含 140 万条记录,我需要将其输入 MySQL 数据库。在我运行任何使我的本地机器瘫痪的东西之前,我想知道最好的方法是什么。当我获得包含更新数据的新文件时,我将需要每 4-6 周执行一次此操作。
我一直认为以下其中一项可能是最好的,但不确定:
选项 1
$input = file('data-file.tab', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$filedata= array();
foreach ($input AS $line) {
$data = explode("\t", $line);
// function to import data to MySQL
}
选项 2
将文件拆分成可管理的 block 并通过 phpMyAdmin 导入。
最佳答案
我不会通过 phpmyadmin 执行此操作。我知道这可能是您更熟悉的界面,但如果您管理的是工业规模的数据集,则应该习惯使用其他更高效、更可靠的工具。
转到命令行并使用 mysqlimport .这是 LOAD DATA statement 的命令行界面.您可以在客户端主机上执行此操作并远程导入,也可以将文件上传到数据库服务器并在本地导入。
要拆分文件,我会使用 pt-fifo-split .这使得在文件 block 上编写 shell 循环变得容易,而无需将文件物理拆分为多个较小的文件。
关于php - 导入 140 万行 800mb 制表符分隔文件的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26110990/