好的家伙我已经下载了wikipedia xml转储及其高达12 GB的数据:\对于一个表我想将它导入到我的localhost上的mysql数据库中 - 但它是一个巨大的文件12GB并且显然是navicats取其导入它的好时间或者它更可能被绞死:(。
有没有办法包含这个转储或至少部分你知道的一点一点。
让我纠正它的21 GB数据 - 不是它有帮助:\ - 是否有人想知道将这样的大量文件导入MySQL数据库。
答案 0 :(得分:2)
使用命令行代替,navicat对于导入大文件非常糟糕,并且可能比使用CLI的时间长20倍。
答案 1 :(得分:1)
看看Sax parser它允许你逐个阅读语料库,而不是将整个12gb读入内存。我不太确定如何将它与mysql接口。
答案 2 :(得分:0)
这是一个相当古老的问题,FWIW ..用新的答案令人耳目一新。我遇到了同样的问题,并且运行单个大型sql文件的工作时间可能存在风险,并且遇到任何问题基本上意味着你重新开始。我做了什么来降低风险并通过CLI获得一些性能。
将大量SQL文件拆分为更小,更易于管理的块,例如' enwiki-20140811-page.sql'分成大约75MB大小的文件。
split -l 75 enwiki-20140811-page.sql split_
会产生相当数量的前缀为' split _'在文件名中。
遍历此文件列表并一次导入一个......一个简单的shell脚本。
for f in $FILES
do
echo "Processing $f file..."
mysql -h $HOST -u $USER -p$PSWD $DB < $f
done
如果因某种原因而中断,您可以轻松地从中断的地方恢复。
通过行计数拆分SQL文件可以防止破坏任何大型INSERT语句。但是,如果将行数减少得太低,则可以在SQL的开头拆分DROP和CREATE语句。通过打开前几个拆分文件并解析,可以很容易地解决这个问题。