mysql 导出导入数据(支持千万级数据量)

数据库 piniu 611浏览 0评论

一、mysqldump(适合数据量少的导出导入)

1、导出

mysqldump -h 127.0.0.1 -P 3306 -uroot -p database > /root/test.sql    #导出库

mysqldump -t datebase -h 127.0.0.1 -P 3306 -uroot -p table1 table2 table3 > /root/test.sql    #导出表

2、导入

mysql -h 127.0.0.1 -P 3306 -uroot -p test < /root/test.sql

二、SELECT * INTO OUTFILE & LOAD DATA INFILE(适合数据量大的导入导出)

1、导出

SELECT * INTO OUTFILE '/home/database/data.txt' FIELDS TERMINATED BY ',' FROM <code>table</code>;

2、导入

LOAD DATA INFILE '/home/database/data.txt' INTO TABLE <code>test</code> FIELDS TERMINATED BY ',';

3、错误信息

错误一: 1290 – The MySQL server is running with the –secure-file-priv option so it cannot execute this statement > 时间: 0.001s

原因: 安装MySQL的时候限制了导入与导出的目录权限

查看secure_file_priv该变量的设置:

SHOW GLOBAL VARIABLES LIKE '%secure%';

选项说明:

secure_file_prive = null #限制mysqld 不允许导入导出

secure_file_priv = /var/lib/mysql-files/ #限制mysqld的导入导出只能发生在/var/lib/mysql-files/目录下

secure_file_priv = ” #不对mysqld的导入导出做限制

解决办法:

修改mysql的my.ini配置文件

[mysqld]
secure_file_priv=''

然后重启mysql

4、注意

这种方式的导入导出不会导出表结构

导入时一定要先把这张表的外键和索引全部去除,不然还是会非常耗时


发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • * 昵称:
  • * 邮箱: