MySQL数据库如何备份?如何导入导出数据或表格?

  • A+

使用数据库一定会遇到的问题: MariaDB/MySQL备份 ,相信大家一定会因为某些需求而需要备份数据库,所以如何将数据库的表格或整份数据库导出、导入绝对是一个值得学习的课题,在本文中,除了介绍一些基本的相关语法外,也会试著从不同的角度来测试这些指令的操作结果,进而更了解这些指令所造成的影响。

MariaDB/MySQL备份

如果你想要有一个完整的且免费的数据库范例可以进行练习,那么可以试试Mariadb官方提供的「Example Databases」,这里面有提供几个资料量丰富的数据库,都是蛮好的练习对象,档案下载并解压后其副档名是「.sql」,配合以下要介绍的导入功能,把范例数据库导入就可以使用了。

MySQL数据库如何备份?如何导入导出数据或表格?
到处数据库/表格
首先,先来说明如何将现有的数据库做备份:需要的指令为「mysqldump」,在执行这个指令在的时候不用进入数据库内,直接在外部执行即可,语法如下:

$ mysqldump -u account -p database_name > backup.sql
account:使用者帐号
database_name:要备份的数据库名称
backup.sql:备份输出名称,一般会以sql当成副档名

执行上面的指令后,系统还会要求我们输入密码,输入之后就可以将数据库导出到指定的档案中。而如果只有备份数据库中的某个表格,则只要在语法后面多加一个表格名称即可,例如:

$ mysqldump -u account -p database_name table_name > backup_table.sql
多个表格则可以直接再加在后面即可:

$ mysqldump -u account -p database_name table_name1 table_name2 > backup_table.sql
导入数据库/表格
接著上面的范例,我们可以试著把现有的数据库给删除,然后用导入的方式来看看是否能够将数据库还原,导入数据库的语法如下:

$ mysql -u account -p database_name < backup.sql
简单的来说,其实就是把之前备份的「.sql」导回数据库而已,很简单吧。不过这边特别要说明的是导入时需要指定数据库名称,如上面的例子为「database_name」,这个数据库必需是已经存在的才行,不然会发生找不到该数据库的错误讯息。因此,你也可以新建一个数据库,然后把旧数据库的资料导入,这样新旧二个数据库里面的内容会是一模一样的。如果忘了怎么新建数据库,那么就试试以下指令吧:

MariaDB [(none)]> create database new_database_name;

注:导入单一表格的语法和导入数据库的语法是「相同」的,不需额外再加表格名称(table_name)

实务案例FAQ
虽然数据库的导入、导出语法蛮简单的,但是有一些实务上的运作结果可能要实际操作一下才能确定,以下就是我自己做了一些测试来解决心中疑问的案例,供大家参考

导入数据库时,指定的数据库是否要存在?
这个问题上面有提到了,导入时需要导入「现存」的数据库才能顺利把资料带入喔,不然会发生找不到数据库的情况

导入数据库时,是否会覆盖原表格中较新的资料?
会,新资料会不见,举例来说:原本表格内的资料有10笔,我们将之备份后再于表格中新增1笔新资料,此时资料总数已变为11笔,若此时将之前的备份资料导入,则新的那笔资料会不见,恢复成原本的10笔 (如果你查看.sql中的语法,就可以发现它是先Drop掉旧资料再导入资料)

导入数据库时,是否会影响新表格的资料?
不会,如果原数据库有10个表格,备份之后新增了1个新表格,此时将备份资料导入并不会影响新表格内容;而若是旧表格被删除了,导入后则会复原

指令的大小写是否会影响执行?
基本上不管大小写,系统都是视为一样的,所以不都可以正常执行,但有一点要注意一下,如果你的表格名称有大写的字母,因为导出备份后「预设」把名称改为小写,之后再导入时你的表格会变成全部小写喔,例如:原表格名称是「Demo」,导出后再导入,则表格名称会变成「demo」,但功能是不变的。那是否可以保留原本的大小写呢?嗯!可以的,有空再来教大家吧!^^

简单的说就是:导入数据库时,会把旧表格「恢复原状」,至于其他新表格则不会影响



发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: