导入维基百科数据库转储 - 杀死navicat - 任何人有任何想法?

时间:2009-05-14 10:26:39

标签: mysql database large-files wikipedia

好的家伙我已经下载了wikipedia xml转储及其高达12 GB的数据:\对于一个表我想将它导入到我的localhost上的mysql数据库中 - 但它是一个巨大的文件12GB并且显然是navicats取其导入它的好时间或者它更可能被绞死:(。

有没有办法包含这个转储或至少部分你知道的一点一点。


让我纠正它的21 GB数据 - 不是它有帮助:\ - 是否有人想知道将这样的大量文件导入MySQL数据库。

3 个答案:

答案 0 :(得分:2)

使用命令行代替,navicat对于导入大文件非常糟糕,并且可能比使用CLI的时间长20倍。

答案 1 :(得分:1)

看看Sax parser它允许你逐个阅读语料库,而不是将整个12gb读入内存。我不太确定如何将它与mysql接口。

答案 2 :(得分:0)

这是一个相当古老的问题,FWIW ..用新的答案令人耳目一新。我遇到了同样的问题,并且运行单个大型sql文件的工作时间可能存在风险,并且遇到任何问题基本上意味着你重新开始。我做了什么来降低风险并通过CLI获得一些性能。

  1. 将大量SQL文件拆分为更小,更易于管理的块,例如' enwiki-20140811-page.sql'分成大约75MB大小的文件。

    split -l 75 enwiki-20140811-page.sql split_
    

    会产生相当数量的前缀为' split _'在文件名中。

  2. 遍历此文件列表并一次导入一个......一个简单的shell脚本。

    for f in $FILES
    do
      echo "Processing $f file..."
      mysql -h $HOST -u $USER -p$PSWD $DB < $f
    done
    
  3. 如果因某种原因而中断,您可以轻松地从中断的地方恢复。

    通过行计数拆分SQL文件可以防止破坏任何大型INSERT语句。但是,如果将行数减少得太低,则可以在SQL的开头拆分DROP和CREATE语句。通过打开前几个拆分文件并解析,可以很容易地解决这个问题。