MySQL导出备份(数据导出)方法详解
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-29 14:23:47 浏览: 评论:0
数据库导出数据或备份数据都是我们一个运维人员会要干的事情,下面我来总结一下mysql中MySQL导出备份操作技巧,希望对各位同学有所帮助.
表数据导出到一个文本文件最简单的方法是使用SELECT... INTO OUTFILE语句的查询结果直接导出到一个文件在服务器主机上。
导出数据的SELECT...INTO OUTFILE声明:这句话的语法结合了常规的SELECT INTO OUTFILE文件名的末尾。默认的输出格式是相同的LOAD DATA,所以下面的语句导出tutorials_tbl的表制表符分隔的,换行结尾的文件到/tmp/tutorials.txt,代码如下:
mysql> SELECT * FROM tutorials_tbl
-> INTO OUTFILE '/tmp/tutorials.txt';
也可以更改输出格式,使用选项来指示如何引用和分隔列和记录,CRLF终止线要导出tutorial_tbl的CSV格式的表格,使用这样的语句,代码如下:
- mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
- -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
- -> LINES TERMINATED BY 'rn';
- SELECT ... INTO OUTFILE
具有以下属性:
由MySQL服务器直接创建输出文件,这样的文件名应指定您希望在服务器主机上的文件将被写入,没有本地版本的LOAD DATA LOCAL版本的类似的语句.
必须要有MySQL的FILE权限才能执行的SELECT... INTO语句,输出文件必须不存在。这可以防止MySQL从会破坏文件可能重要.
应该在服务器主机上或一些方法来检索文件从该主机的登录帐户,否则SELECT... INTO OUTFILE可能是没有价值的.
在Unix下,创造了世界可读的文件和所拥有的MySQL服务器,这意味着虽然就可以读取该文件,但是不能够删除它.
作为原始数据的导出表:使用mysqldump程序复制或备份表和数据库,它可以写表输出的原始数据文件或为一组的INSERT语句重新创建该表中的记录.
转储一个表,必须指定一个数据文件 - 选项卡上的选项,表示想要的MySQL服务器写入文件所在的目录.
使用mysqldump程序复制或备份表和数据库,它可以写表输出的原始数据文件,或为一组的INSERT语句重新创建该表中的记录.
转储一个表,必须指定一个数据文件 - 选项卡上的选项,表示想要的MySQL服务器写入文件所在的目录,代码如下:
- $ mysqldump -u root -p --no-create-info
- --tab=/tmp TUTORIALS tutorials_tbl
- password ******
在SQL格式导出表的内容或定义:一个表中的SQL格式导出到一个文件,使用这样的命令,代码如下:
$ mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txt
password ******
这将创建文件的内容如下,代码如下:
- --------------------------------------------------------------------------------
- -- MySQL dump 8.23
- --
- -- Host: localhost Database: TUTORIALS
- ---------------------------------------------------------
- -- Server version 3.23.58
- --
- -- Table structure for table `tutorials_tbl`
- --
- CREATE TABLE tutorials_tbl (
- tutorial_id int(11) NOT NULL auto_increment,
- tutorial_title varchar(100) NOT NULL default '',
- tutorial_author varchar(40) NOT NULL default '',
- submission_date date default NULL,
- PRIMARY KEY (tutorial_id),
- UNIQUE KEY AUTHOR_INDEX (tutorial_author)
- ) TYPE=InnoDB;
- --
- -- Dumping data for table `tutorials_tbl`
- --
- INSERT INTO tutorials_tbl
- VALUES (1,'Learn PHP','John Poul','2007-05-24');
- INSERT INTO tutorials_tbl
- VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
- INSERT INTO tutorials_tbl
- VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');
要转储多个表,他们的名字所有的数据库名称参数,要转储整个数据库,不指定任何表后的数据库,如下所示:
$ mysqldump -u root -p TUTORIALS > database_dump.txt
password ******
所有可用的数据库备份主机上使用以下命令:
$ mysqldump -u root -p --all-databases > database_dump.txt
password ******
在SQL格式导出表的内容或定义,这些方法可用于实现数据库的备份策略.
表或数据库复制到另一台主机:如果要复制的表或数据库从一个MySQL服务器,然后使用mysqldump数据库名和表名,在源主机上运行以下命令,这将转储完整的数据库到dump.txt文件,代码如下:
$ mysqldump -u root -p database_name table_name > dump.txt
password *****
复制完整的数据库,而不使用一个特定的表名称,如上面所解释,现在,FTP dump.txt文件在另一台主机上,使用下面的命令,在运行此命令之前,请确保已创建目标服务器上的数据库名称,代码如下:
$ mysql -u root -p database_name < dump.txt
password *****
另一种方法,而无需使用一个中间文件来完成,mysqldump输出直接通过网络发送到远程的MySQL服务器,如果可以连接到两台服务器的cookbook 数据库所在的主机上,使用以下命令,代码如下:
$ mysqldump -u root -p database_name
states | mysql -h other-host.com database_name
命令mysqldump的一半连接到本地服务器,并写入转储输出管道,MySQL的一半的命令连接到远程MySQL服务器phpfensi.com,它读取输入管和其他host.com服务器发送的每个语句。
上面介绍的都是手动备份或导出数据,下面我们来写一个自动定时备份的windows自带的“任务计划”功能,设定一个时间,让系统定时跑脚本,不就实现了自动备份数据库的功能了吗?首先把脚本代码贴出来:
- @echo on
- REM------------------------backup bugdb which is InnoDB-----------------------------
- del F:/backup/website/bugdb_*.sql
- cd F:/usr/wamp/mysql/bin
- set year=%date:~0,4%
- set month=%date:~5,2%
- set day=%date:~8,2%
- set filename=bugdb_%year%%month%%day%.sql
- mysqldump.exe bugdb -uroot -p123456 > F:/backup/website/%filename%
- @echo off
依次解释一下每句代码的意思:
第四行:删除指定目录下的文件名包含有“bugdb_”字样的sql文件。因为这个代码是我先前写的,在公司的服务器上每天晚上跑一次。所以每次备份之前,先删除头天已备份成功的文件。
第五行:进入MySQL的bin目录,因为在此目录下有个mysqldump.exe的文件,该文件时MySQL数据库自带的备份和恢复MySQL数据库的工具,这个脚本文件正是用到该工具。
第六行:取当前系统日期的年份,以四位数字表示,如2010。
第七行:取当前系统日期的月份,以两位数字表示,如03。
第八行:取当前系统日期的日期,以两位数字表示,如12。
第九行:定义备份文件名,最终的文件名以bugdb_20100312.sql形式存在,即文件名加日期的形式。
第十行:执行备份。
再来解释一下mysqldump的语法格式,格式为:
mysqldump.exe "要备份的数据库名" -u(接用户名) -p(接密码) > "备份文件存放的路径及文件名"
其中“>”的作用是输出重定向,即把mysqldump.exe备份的数据输出到一个文件里并保存,将以上脚本复制到一个文本文件里,并另存为*.bat,如backup.bat的批处理文件,接下来会要用到该文件,我把它存在D:/scripts/backup_bugdb.bat.
打开“控制面板”里的“任务计划”,新建一个计划任务:在“运行”里面通过浏览按钮找到刚保存的backup.bat批处理文件,在“计划”选项卡和“设置”选项卡里根据自己的实际需要进行设定,设置完毕后点“确定”进行保存该任务。接下来系统会在指定的时间里周期性地运行此脚本,从而达到自动备份数据库的目的。
另外附上还原数据库的命令,代码如下:
D:htmlwampmysqlbinmysql.exe -uroot -p123456
--default-character-set=utf8 bugdb < F:bugdb_20100312.sql
Tags: MySQL导出备份 MySQL备份数据
- 上一篇:MySQL数据导入恢复(还原)实例
- 下一篇:一些简单sql注入与防止sql注入详解
相关文章
- ·windows下mysql每天定时备份数据库几种方法(2014-09-28)
- ·Mysql mysqldump命令备份所有数据库(2014-10-02)
- ·Mysql主数据库+备份数据库部署教程(2015-04-18)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)