Mysql 导入维基百科数据库转储-杀死navicat-有人有什么想法吗?

Mysql 导入维基百科数据库转储-杀死navicat-有人有什么想法吗?,mysql,database,large-files,wikipedia,Mysql,Database,Large Files,Wikipedia,好了,伙计们,我已经下载了wikipedia xml转储文件,它的数据量高达12 GB:\对于一个表,我想将它导入本地主机上的mysql数据库-但是它是一个巨大的12 GB文件,显然navicats在导入它的过程中花了很多时间,或者更可能是被挂起了:( 有没有一种方法可以包含这个转储,或者至少部分地包含,最多你一点一点地知道 让我纠正一下,它有21 GB的数据,这并不是说它有帮助:\-有没有人想过将如此庞大的文件导入MySQL数据库。看看它,你可以一块一块地读取语料库,而不是将整个12 GB的

好了,伙计们,我已经下载了wikipedia xml转储文件,它的数据量高达12 GB:\对于一个表,我想将它导入本地主机上的mysql数据库-但是它是一个巨大的12 GB文件,显然navicats在导入它的过程中花了很多时间,或者更可能是被挂起了:(

有没有一种方法可以包含这个转储,或者至少部分地包含,最多你一点一点地知道



让我纠正一下,它有21 GB的数据,这并不是说它有帮助:\-有没有人想过将如此庞大的文件导入MySQL数据库。

看看它,你可以一块一块地读取语料库,而不是将整个12 GB的数据读入内存。不过,我不太确定你会如何将它与MySQL接口。

使用相反,在命令行中,navicat对于导入大文件来说是可怕的,并且可能需要比使用CLI长20倍的时间。

这是一个非常老的问题,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
    
    $FILES中的f的
    
    做
    echo“正在处理$f文件…”
    mysql-h$HOST-u$USER-p$PSWD$DB<$f
    完成
    
  • 如果由于某种原因而中断,您可以很容易地从中断处恢复

    通过行数拆分SQL文件可以防止断开任何大的INSERT语句。但是,如果行数太低,则可以在SQL的开头拆分drop并创建语句。打开前几个拆分文件并解析即可轻松解决此问题。

    “它更有可能被挂起”哦,这是正确的!