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服务器otherhost.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

时间: 2025-01-02 07:53:21

MySQL导出备份(数据导出)方法详解的相关文章

Android通过json向MySQL中读写数据的方法详解【读取篇】_Android

本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private void parseJsonMulti(String strResult) { try { Log.v("strResult11","strResult11="+strResult); int index=strResult.indexOf("[");

Android通过json向MySQL中读写数据的方法详解【写入篇】_Android

本文实例讲述了Android通过json向MySQL中写入数据的方法.分享给大家供大家参考,具体如下: 先说一下如何通过json将Android程序中的数据上传到MySQL中: 首先定义一个类JSONParser.Java类,将json上传数据的方法封装好,可以直接在主程序中调用该类,代码如下 public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String j

Android通过json向MySQL中读写数据的方法详解【读取篇】

本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private void parseJsonMulti(String strResult) { try { Log.v("strResult11","strResult11="+strResult); int index=strResult.indexOf("[");

Android通过json向MySQL中读写数据的方法详解【写入篇】

本文实例讲述了Android通过json向MySQL中写入数据的方法.分享给大家供大家参考,具体如下: 先说一下如何通过json将Android程序中的数据上传到MySQL中: 首先定义一个类JSONParser.Java类,将json上传数据的方法封装好,可以直接在主程序中调用该类,代码如下 public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String j

PHP中filter函数校验数据的方法详解_php技巧

介绍PHP中filter函数校验数据的方法详解,PHP过滤器包含两种类型:Validation用来验证验证项是否合法.Sanitization用来格式化被验证的项目,因此它可能会修改验证项的值,将不合法的字符删除. input_filters_list() 用来列出当前系统所支持的所有过滤器. 复制代码 代码如下: <?php foreach(filter_list() as $id => $filter) {     echo $filter.' '.filter_id($filter).&

vuejs动态组件给子组件传递数据的方法详解_javascript技巧

通过子组件定义时候的props可以支持父组件给子组件传递数据,这些定义的props在子组件的标签中使用绑定属性即可,但是如果使用的是<component>动态组件,这个时候就没有显式的子组件标签,要给子组件传递数据需要在<component> 中进行绑定 <div class="app" id="deviceready"> <component :is="currentView" :user_name.s

Mongodb中MapReduce实现数据聚合方法详解_MongoDB

Mongodb是针对大数据量环境下诞生的用于保存大数据量的非关系型数据库,针对大量的数据,如何进行统计操作至关重要,那么如何从Mongodb中统计一些数据呢? 在Mongodb中,给我们提供了三种用于数据聚合的方式: (1)简单的用户聚合函数: (2)使用aggregate进行统计: (3)使用mapReduce进行统计: 今天我们首先来讲讲mapReduce是如何统计,在后续的文章中,将另起文章进行相关说明. MapReduce是啥呢?以我的理解,其实就是对集合中的各个满足条件的文档进行预处理

批量杀死MySQL连接的几种方法详解

批量杀死MySQL连接的几种方法详解 官网:https://dev.mysql.com/doc/refman/5.6/en/kill.html 13.7.6.4 KILL Syntax Press CTRL+C to copy KILL [CONNECTION | QUERY] processlist_id Each connection to mysqld runs in a separate thread. You can kill a thread with the KILL proces

mysql UNIQUE索引的使用方法详解

mysql教程 UNIQUE索引的使用方法详解 语法: UNIQUE KEY `test` (`xref_key`,`xref_dbname`) UNIQUE KEY `xref_key` (`xref_key`,`xref_dbname`)        上述语法检查xref_key与xref_dbname的组合是否是唯一值,可以设定多个字段的组 合.其中,test是索引表中的字段名称.         该方法适合用来解决多个字段相互依赖,且必须满足唯一性的条件的情况.在经常 新增或删除资料表

Java解析XML格式数据的方法详解_java

最初,XML 语言仅仅是意图用来作为 HTML 语言的替代品而出现的,但是随着该语言的不断发展和完善,人们越来越发现它所具有的优点:例如标记语言可扩展,严格的语法规定,可使用有意义的标记,内容存储和表现分离等等优势注定了该语言从诞生之日起就会走向辉煌. XML 语言在成为 W3C 标准之后进入到了一个快速发展的时期,当然它本身所具有的一系列优点和优势也注定了各大技术厂商对它的偏爱,Java 作为软件行业的一种开发技术也迅速作出了反应,出现了多种对 XML 支持的工具,本文将会从这个角度对 Jav