1.导出数据的基本语句select ...into outfile,实用程序mysqldump,常见的可选项,--tab=导出数据文件的路径,--no-create-info不创建多余信息.
- 导出原始数据,就是文本内容mysqldump -u root -p123456 --no-create-info --tab=/tmp database_name table_name
- 导出sql文件,其中有create,insert,update,delete等所有的sql语句,mysqldump -u root -p123456 database_name table_name>dump.sql,把dump.sql文件重新执行一次就恢复数据了。
- 注意在导出文本文件时有如下错误:The MySQL server is running with the --secure-file-priv option so it cannot execute this statement。 secure_file_priv选项是mysql写出文件的位置。在mysql中用show variables like '%secure%'可以查看其值。可以看到secure_file_priv默认值为/var/lib/mysql-files/,或许这就是导出不成功的原因;因此我们可以更改mysql配置文件,经过我一下午的测试:修改/etc/mysql/my.cnf文件是没有用的,应该修改/etc/mysql/mysql.conf.d/mysqld.cnf在文件末尾加上一句secure_file_priv='/'表示可以导出文件到任意位置,但实际上只能导出到/tmp目录下,其他目录因为访问权限被拒绝。
- 参考链接:https://blog.csdn.net/ZT7524/article/details/101101341?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
2.导入数据到数据库中:
- 导入sql文件mysql -u root -p123456 database_name <dump.sql,要先创建数据库才行。或者登上mysql,set names utf8,设置字符编码,source dump.sql导入数据
- 导入文本文件(原始数据),登上mysql,再用基本语句load data infile 'runoob_tbl.txt' into table tablename。或者使用mysqlimport -u root -p123456 --local database_name 'table_name.txt',注意mysqlimport只用数据库名,不用数据表名,通过要导入的文本文件名来确定要导入的数据表,所以文本文件名必须要和导入的数据表名一致。因为是导入文本数据,所以要导入的表应该事先创建好,可以在原数据库中用show create table table_name得到表的创建命令,复制粘贴到新数据库运行即可。