关于mysql导入导出数据–即备份的一些总结

关于mysql数据库备份的一些知识的总结,昨晚想了一下,在学习的过程中要不多总结才能记得更深刻,欢迎各位给他探讨共同进步。
首先说一下导出数据–
最常用的是直接复制mysql的data文件,这种方式简单粗暴,但是有一些注意事项;

1,这种方式不支持增量备份,所以复制之前要停掉mysql服务,如果某张表正在被用的话会复制失败。
2,mysql数据库的版本最好要保持一致,不同版本之间可能会出现一些问题,虽然我现在还没遇到。

再说一下CMD界面下的导出操作–
mysqldump
一----首先导出全部数据库文件—


C:\Users\Administrator>mysqldump -u root -p team  >C:/mysqlback/playered.sql
Enter password: ******

C:\Users\Administrator>

这种方式导出的数据不包含数据库(即create database)的信息,


C:\Users\Administrator>mysqldump -u root -p  --databases team  >C:/mysqlback/pla.sql
Enter password: ******

C:\Users\Administrator>

这种包含创建数据库的信息
关于mysql导入导出数据--即备份的一些总结_mysql以上是导出的文件内容,可以发现pla.sql包含create database 语句,

二—其次是可以单独导出某张表,


C:\Users\Administrator>mysqldump -u root -p   team player  >C:/mysqlback/players.sql
Enter password: ******

C:\Users\Administrator>

三----然后还以通过mysqldump 导出txt、html、xml 文件


C:\Users\Administrator>mysqldump -T  C:/mysqlback -u root -p   team player
Enter password: ******

关于mysql导入导出数据--即备份的一些总结_xml_02
这时导出的是一个txt和一个sql文件,并且和导出的表同名。
四—用mysql --execute 导出


C:\Users\Administrator>mysql -u root -p --html --vertical --execute="select * from player;" team >
C:/mysqlback.html
Enter password: ******

C:\Users\Administrator>mysql -u root -p --html --vertical --execute="select * from player;" team >
C:/mysqlback\play.html
Enter password: ******

C:\Users\Administrator>

关于mysql导入导出数据--即备份的一些总结_xml_03文件地址–C:\mysqlback\play.html
关于mysql导入导出数据--即备份的一些总结_xml_04文件地址–C:\mysqlback.html 文件内容为—
关于mysql导入导出数据--即备份的一些总结_数据库_05


C:\Users\Administrator>mysql -u root -p --xml --vertical --execute="select * from player;" team >  C
:/mysqlback\play.xml
Enter password: ******

关于mysql导入导出数据--即备份的一些总结_html_06四----下面是登陆数据库之后的导出操作

mysql> use team ;
Database changed
mysql> select * from player into outfile 'C:/mysqlback/playered.txt' ;
Query OK, 2 rows affected (0.00 sec)

以上就是数据的导出操作。注意一点的就是

mysql> select * from player into outfile 'C:/mysql/playered.txt' ;
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot exec
ute this statement

如果出现关于 --secure-file-priv 错误 可能的原因就是—到处的地址不符合 MySQL安全机制的要求,
另外我发现一点,如果用mysql —execute 导出数据,可以导出到盘的根目录,其他地方都可以,没有secure-file-priv的限制。


下面是倒入操作—
首先还是data目录的复制,然后登陆数据库,可能要修改登陆的用户,没实际操作过,这里也不演示了。
二,通过source 倒入


mysql> use team ;
Database changed
mysql> delete from player ;
Query OK, 2 rows affected (0.01 sec)

mysql> select * from player ;
Empty set (0.00 sec)

mysql> source C:/mysqlback/play.xml ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to y
MySQL server version for the right syntax to use near '<?xml version="1.0"?>

<resultset statement="select * from player" xmlns:xsi="ht' at line 1
mysql> source C:/mysqlback/play.txt
ERROR:
Failed to open file 'C:\mysqlback\play.txt', error: 2
mysql> source C:/mysqlback/player.sql
Query OK, 0 rows affected (0.00 sec)

mysql>

source只能倒入sql文件,其他文件不好用

三—通过load data infile倒入 (只能倒入txt 文件)

MySQL server version for the right syntax to use near 'table player' at line 1
mysql> load data infile 'C:/mysqlback/playered.txt' into table player ;
Query OK, 2 rows affected (0.00 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
--通过mysqlimport 倒入
C:\Users\Administrator>mysqlimport -u root -p team C:/mysqlback/player.txt
Enter password: ******
team.player: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

这里有一定要注意的是,倒入的文件为文本文件,且文本文件 名跟表名一样,否则会提示表不存在。


C:\Users\Administrator>mysqlimport -u root -p team C:/mysqlback/playered.txt
Enter password: ******
mysqlimport: Error: 1146, Table 'team.playered' doesn't exist, when using table: playered

五,还有一种,通过mysql倒入,也不需要登陆数据库 (只支持sql文件,同source导入一样)

C:\Users\Administrator>mysql -u root -p team <C:/mysqlback/player.txt
Enter password: ******
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that correspond
s to your MySQL server version for the right syntax to use near '1001   寮犱笁  5       鎭掓嘲闃?100
2       鏉庡洓  65      鎭掑畨' at line 1
C:\Users\Administrator>mysql -u root -p team <C:/mysqlback/player.sql
Enter password: ******

以上就是数据的导出和导入。
其他附加的条件没有添加,感兴趣的可以自行添加;