MySQL中大数据库的导出和导入
在mysql要导入超大数据库我们如果有服务管理权限直接在mysql data目录下载把你要复制的数据打包,然后放到要导入的data目录下即可,但是如果没有这个权限我们只能按下面方法操作了。
这时用MySQL的原生工具就能很好地解决这些问题了。
例
总记录数: 1016126, 每行平均大小 46822
假设我们要对一个名为blog的数据库进行导出和导入的操作
导出:
mysqldump -u数据库用户名 -p密码 blog > 路径/导出名.sql
代码如下 | 复制代码 |
方法: mysqldump -t -n --default-character-set=latin1 test yejr > /backup/yejr.sql |
耗时: 2124 sec
具体的操作是这样的,打开命令提示符(这里都以Windows系统为例),进入mysql安装所在目录中的bin文件夹(因为我的mysql没有安装为本地服务,所以要进行这一步),最后输入运行上面的那条命令即可。
导入:
mysql -u数据库用户名 -p密码 blog
代码如下 | 复制代码 |
方法: mysql test |
上面的方法感觉在性能上还是可以优化的,后来我们再尝试一下利用outfile
导出成文本
代码如下 | 复制代码 |
方法: SELECT * INTO OUTFILE '/backup/yejr.txt' FROM yejr; |
耗时: 3252.15 秒
操作如上,用命令提示符进入bin文件夹后,输入运行该命令即可。
结论:
1. 用 load data 是较快的方法
2. 大数据量情况下, 最好是创建好表之后, 同时也要创建好相关的索引. 虽然说没有索引时导入更快, 但是数据导入完成之后再创建索引总共的耗时比事先创建好了再导入要来的多多了.
下一篇: 详解PHP正则表达式替换实现