大文件导入 MYSQL,如何最快速

大文件导入 MYSQL,如何最快速,第1张

一般的数据备份用 :mysql路径+bin/mysqldump -u 用户名 -p 数据库名 >导出的文件

数据还原是:到mysql命令行下面,用:source   文件名的方法。

但是这种方法对大数据量的表进行 *** 作就非常慢。因为他不仅导出了数据还导出了表结构。

在针对大数据量的表时,我们可以用infile和 outfile来 *** 作。

outfile导出数据库数据的用法:

下图我们可以看到6百多万数据35秒就搞定了:

下面我们看看infile的语法:

在infile导入数据的时候,我们还可以做一些优化。我们可以用

alter table table_name disable keys   关闭普通索引。等数据导入玩,再用:

alter table table_name enable keys    来开启普通索引。这样就不会边导入数据,边整理索引的二叉树儿影响导数据的效率。

如果可以保证 数据的正确性,我们可以将表的唯一索引也关闭,之后再开启,不是每条数据就算是唯一的他都要去检测一遍。命令:

set unique_checks=0 #关闭唯一校验

set unique_checks=1#开启唯一校验

如果是InnoDB存储引擎,我们还可以set auto commit=0关闭自动提交,来提高效率。InnoDB是按主键的顺序保存的,我们将其主键顺序排列也可以提高效率。

下面我们对myisam引擎的表做个测试,我们先不关索引,导入数据(用了近4分钟):

然后我们先把索引关闭试试(只用了一分钟多一点,快了不少啊!摸摸大!):

1、首先已管理员身份(通过win+r)进入命令提示符

2、先进入MYSQL安装目录,以我的为例:d:/wamp/bin/mysql/mysql5.5.20/bin 进入该目录的bin目录下,该目录下有个mysql.exe 文件

mysql 导入超大文件到数据库 - queen - 安然

3、为了保证一次性通过,可以先测试一下数据库的是否连接成功 mysql -u root -p (数据库有密码的写上密码);再测试一下访问的数据库是否能访问 mysql -u root -p (数据库有密码的写上密码) craft(这个就是数据库的名称);我第二次导入时遇到一个问题,就是我测试数据库连接成功后,直接又测试数据库是否能够访问,出现错误

mysql 导入超大文件到数据库 - queen - 安然

我检查了一遍命令没发现错误啊,没办法了,问我领导,人家三下五除二就搞定了,问了才知道,所有的命令都应该在

mysql 导入超大文件到数据库 - queen - 安然

下执行,包括测试数据库是否连接成功,数据库是否能访问和最后的数据库导入,我的错误就是在检查了数据库是否连接成功后就进入mysql里,没有退出来。好吧,又记了一遍。

4、如果上面的 *** 作没有问题,下一步就进行数据导入 *** 作

mysql -u root -p (数据库有密码的写上密码) craft <d:/craft.sql

导入过程可能会由于其他原因导致错误,我遇到的是在导入过程中可能由于编码的原因出现错误,所以,可以再加上点内容 mysql -u root -p --default-character-set=utf8 craft <d:/craft.sql,敲回车后,出现输入密码提示,如果数据库设置密码,就可以输入密码后再打回车,直到导入 *** 作完成

mysql 导入超大文件到数据库 - queen - 安然

注意:这样就完成了导入,不过中间还可能出现的问题就是要导入文件的权限问题,要保证你所登录的身份有对文件的写 *** 作,所以为了防止万一,我们可以将文件的所有权限都打开:选中文件,点右键,选择属性,选“安全”选项卡,选中你登录的角色,点“编辑”,选中“允许”下面的“完全控制”,点击确定。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6266648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-19
下一篇 2023-03-19

发表评论

登录后才能评论

评论列表(0条)

保存