iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL怎么用SQL语句备份和恢复表数据
  • 648
分享到

MySQL怎么用SQL语句备份和恢复表数据

2024-04-02 19:04:59 648人浏览 独家记忆
摘要

本篇内容介绍了“Mysql怎么用sql语句备份和恢复表数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&

本篇内容介绍了“Mysql怎么用sql语句备份和恢复表数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

 
1. 使用SQL语句备份和恢复表数据(提一下,不细讲)
 
用户可以使用SELECT INTO…OUTFILE语句把表数据导出到一个文本文件中,并用LOAD DATA …INFILE语句恢复数据。但是这种方法只能导出或导入数据的内容,不包括表的结构,如果表的结构文件损坏,则必须先恢复原来的表的结构。
 
SELECT INTO…OUTFILE格式:
 
SELECT *  INTO OUTFILE 'file_name' export_options
 
          |DUMPFILE 'file_name'
 
其中,export_options为:
 
[FIELDS
 
       [terminated BY 'string']
 
       [[optionally] ENCLOSED BY 'char']
 
       [escaped BY 'char' ]
 
]
 
[LINES TERMINATED BY 'string' ]
 
说明:
 
这个语句的作用是将表中SELECT语句选中的行写入到一个文件中,file_name是文件的名称。文件默认在服务器主机上创建,并且文件名不能是已经存在的(这可能将原文件覆盖)。如果要将该文件写入到一个特定的位置,则要在文件名前加上具体的路径。在文件中,数据行以一定的形式存放,空值用“\N”表示。
 
使用OUTFILE时,可以在export_options中加入以下两个自选的子句,它们的作用是决定数据行在文件中存放的格式:
 
●  fields子句:在FIELDS子句中有三个亚子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。如果指定了FIELDS子句,则这三个亚子句中至少要指定一个。
 
(1)TERMINATED BY用来指定字段值之间的符号,例如,“TERMINATED BY ','”指定了逗号作为两个字段值之间的标志。
 
(2)ENCLOSED BY子句用来指定包裹文件中字符值的符号,例如,“ENCLOSED BY ' " '”表示文件中字符值放在双引号之间,若加上关键字OPTIONALLY表示所有的值都放在双引号之间。
 
(3)ESCAPED BY子句用来指定转义字符,例如,“ESCAPED BY '*'”将“*”指定为转义字符,取代“\”,如空格将表示为“*N”。
 
●   LINES子句:在LINES子句中使用TERMINATED BY指定一行结束的标志,如“LINES TERMINATED BY '?'”表示一行以“?”作为结束标志。

如果FIELDS和LINES子句都不指定,则默认声明以下子句:
 
FIELDS TERMINATED BY '\t'ENCLOSED BY '' ESCAPED BY '\\'
 
LINES TERMINATED BY '\n'
 
如果使用DUMPFILE而不是使用OUTFILE,导出的文件里所有的行都彼此紧挨着放置,值和行之间没有任何标记,成了一个长长的值。
 
5.LOAD DATA …INFILE语句是SELECT INTO…OUTFILE语句的补语,该语句可以将一个文件中的数据导入到中。
 
LOAD DATA …INFILE格式:
 
LOAD DATA [LOW_PRIORITY | concurrent][LOCAL] INFILE 'file_name.txt'
 
   [replace | ignore]
 
   INTO TABLE tbl_name
 
   [FIELDS
 
       [TERMINATED BY 'string']
 
       [[OPTIONALLY] ENCLOSED BY 'char']
 
       [ESCAPED BY 'char' ]
 
   ]
 
   [LINES
 
       [STARTING BY 'string']
 
       [TERMINATED BY 'string']
 
   ]
 
   [IGNORE number LINES]
 
   [(col_name_or_user_var,...)]
 
   [SET col_name = expr,...)]
 
说明:  
 
●   LOW_PRIORITY | CONCURRENT:若指定LOW_PRIORITY,则延迟语句的执行。若指定CONCURRENT,则当LOAD DATA正在执行的时候,其他线程可以同时使用该表的数据。
 
●   LOCAL:若指定了LOCAL,则文件会被客户主机上的客户端读取,并被发送到服务器。文件会被给予一个完整的路径名称,以指定确切的位置。如果给定的是一个相对的路径名称,则此名称会被理解为相对于启动客户端时所在的目录。若未指定LOCAL,则文件必须位于服务器主机上,并且被服务器直接读取。与让服务器直接读取文件相比,使用LOCAL速度略慢,这是因为文件的内容必须通过客户端发送到服务器上。
 
●  file_name:待载入的文件名,文件中保存了待存入数据库的数据行。输入文件可以手动创建,也可以使用其他的程序创建。可以指定文件的绝对路径,如“D:/file/myfile.txt”,则服务器根据该路径搜索文件。若不指定路径,如“myfile.txt”,则服务器在默认数据库的数据库目录中读取。若文件为“./myfile.txt”,则服务器直接在数据目录下读取,即mysql的data目录。出于安全原因,当读取位于服务器中的文本文件时,文件必须位于数据库目录中,或者是全体可读的。
 
注意:这里使用正斜杠指定windows路径名称,而不是使用反斜杠。
 
●  tb_name:需要导入数据的表名,该表在数据库中必须存在,表结构必须与导入文件的数据行一致。
 
●  REPLACE | IGNORE:如果指定了REPLACE,则当文件中出现与原有行相同的唯一关键字值时,输入行会替换原有行。如果指定了IGNORE,则把与原有行有相同的唯一关键字值的输入行跳过。
 
●   FIELDS子句:此处的FIELDS子句和SELECT..INTO OUTFILE语句中类似。用于判断字段之间和数据行之间的符号。
 
●  LINES子句:TERMINATED BY亚子句用来指定一行结束的标志。STARTING BY亚子句则指定一个前缀,导入数据行时,忽略行中的该前缀和前缀之前的内容。如果某行不包括该前缀,则整个行被跳过。
 
●  IGNORE number LINES:这个选项可以用于忽略文件的前几行。例如,可以使用IGNORE 1 LINES来跳过第一行。
  www.2cto.com  
●  col_name_or_user_var:如果需要载入一个表的部分列或文件中字段值顺序与表中列的顺序不同,就必须指定一个列清单,其中可以包含列名或用户变量。
 
SET子句:SET子句可以在导入数据时修改表中列的值。
 
例: 备份XSCJ数据库中的KC表中数据到D盘FILE目录中,要求字段值如果是字符就用双引号标注,字段值之间用逗号隔开,每行以“?”为结束标志。最后将备份后的数据导入到一个和KC表结构一样的空表COURSE表中。
 
首先导出数据:
 
USE XSCJ;
 
SELECT * FROM KC
 
   INTO OUTFILE'D:/FILE/myfile1.txt'
 
     FIELDS  TERMINATED BY ' , '
 
        OPTIONALLYENCLOSED BY ' " '
 
     LINES TERMINATED BY '? ';
 
文件备份完后可以将文件中的数据导入到COURSE表中,使用以下命令:
 
LOAD DATA INFILE 'D:/FILE/myfile1.txt'
 
   INTO TABLE COURSE
 
     FIELDS  TERMINATED BY ' , '
 
          OPTIONALLYENCLOSED BY ' " '
 
     LINES TERMINATED BY '? ';
  www.2cto.com  
注意:在导入数据时,必须根据文件中数据行的格式指定判断的符号。例如,在myfile1.txt文件中字段值是以逗号隔开的,导入数据时一定要使用“TERMINATED BY ','”子句指定逗号为字段值之间的分隔符,与SELECT…INTOOUTFILE语句相对应。
 
因为MySQL表保存为文件形式,所以备份很容易。但是在多个用户使用MySQL的情况下,为了得到一个一致的备份,在相关的表上需要做一个读定,防止在备份过程中表被更新;当恢复数据时,需要一个写锁定,以避免冲突。在备份或恢复完以后要对表进行解锁。
 
2.   启用日志
 
二进制日志可以在启动服务器的时候启用,这需要修改C:\Program Files\MySQL文件夹中的my.ini选项文件。打开该文件,找到[d]所在行,在该行后面加上以下格式的一行:
 
 log-bin[=filename]
 
说明:加入该选项后,服务器启动时就会加载该选项,从而启用二进制日志。如果filename包含扩展名,则扩展名被忽略。MySQL服务器为每个二进制日志名后面添加一个数字扩展名。每次启动服务器或刷新日志时该数字增加1。如果filename未给出,则默认为主机名。假设这里filename取名为bin_log。若不指定目录,则在MySQL的data目录下自动创建二进制日志文件。由于下面使用mysqlbinlog工具处理日志时,日志必须处于bin目录下,所以日志的路径就指定为bin目录,添加的行改为以下一行:
 
log-bin=C:/Program Files/MySQL/MySQLServer 5.1/bin/bin_log
 
保存,重启服务器。重启服务器的方法可以是:
 
先关闭服务器,
 
net stop mysql 
 
再启动服务器:
 
net start mysql
 
此时,MySQL安装目录的bin目录下多出两个文件:bin_log.000001和bin_log.index。bin_log.000001就是二进制日志文件,以二进制形式存储,用于保存数据库更新信息。当这个日志文件大小达到最大,MySQL还会自动创建新的二进制文件。bin_log.index是服务器自动创建的二进制日志索引文件,包含所有使用的二进制日志文件的文件名。
 
使用mysqlbinlog实用工具可以检查二进制日志文件。命令格式为:  mysqlbinlog[options] log-files...  www.2cto.com  
 
说明:log-files是二进制日志的文件名。
 
例如,运行以下命令可以查看bin_log.000001的内容:
 
mysqlbinlog bin_log.000001
 
由于二进制数据可能非常庞大,无法在屏幕上延伸,可以保存到文本文件中:
 
mysqlbinlogbin_log.000001>D:/FILE/lbin-log000001.txt
 
使用日志恢复数据的命令格式如下:
 
mysqlbinlog [options] log-files… |mysql [options]
 
例: 假设用户在星期一下午1点使用mysqldump工具进行数据库XSCJ的完全备份,备份文件为file.sql。从星期一下午1点开始用户启用日志,bin_log.000001文件保存了从星期一下午1点到星期二下午1点的所有更改,在星期二下午1点运行一条SQL语句:
 
Flush logs;
 
此时创建了bin_log.000002文件,在星期三下午1点时数据库崩溃。现要将数据库恢复到星期三下午1点时的状态。首先将数据库恢复到星期一下午1点时的状态,在DOS窗口输入以下命令:
 
mysqldump -uroot -p123456 XSCJ<file.sql
 
使用以下命令将数据库恢复到星期二下午时的状态:
 
mysqlbinlog bin_log.000001 | mysql-uroot -p123456
 
再使用以下命令即可将数据库恢复到星期三下午1点时的状态:
 
mysqlbinlog bin_log.000002 | mysql-uroot -p123456
 
由于日志文件要占用很大的硬盘资源,所以要及时将没用的日志文件清除掉。以下这条SQL语句用于清除所有的日志文件:  www.2cto.com  
 
Reset master;
 
如果要删除部分日志文件,可以使用purge master logs语句。
 
语法格式为:PURGE {MASTER |BINARY} LOGS TO 'log_name'
 
或: PURGE {MASTER | BINARY} LOGS BEFORE 'date'
 
说明:第一个语句用于删除特定的日志文件,log_name为文件名。第二个语句用于删除时间date之前的所有日志文件。MASTER和BINARY是同义词。

“MySQL怎么用SQL语句备份和恢复表数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL怎么用SQL语句备份和恢复表数据

本文链接: https://www.lsjlt.com/news/60835.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL怎么用SQL语句备份和恢复表数据
    本篇内容介绍了“MySQL怎么用SQL语句备份和恢复表数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&...
    99+
    2024-04-02
  • MySQL中怎么备份和恢复数据表
    今天就跟大家聊聊有关MySQL中怎么备份和恢复数据表,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。你可以使用SELECT INTO OUTF...
    99+
    2024-04-02
  • 如何使用SQL语句在MySQL中进行数据备份和恢复?
    如何使用SQL语句在MySQL中进行数据备份和恢复?在数据库中,数据备份和恢复是非常重要的操作,可以保证数据的安全性并且在遇到意外情况时能够迅速恢复数据。MySQL是一个非常常用的关系型数据库,它提供了多种方式来进行数据备份和恢复,其中一种...
    99+
    2023-12-17
    MySQL SQL 数据备份
  • 怎么备份和恢复MySQL数据库
    这篇文章主要介绍“怎么备份和恢复MySQL数据库”,在日常操作中,相信很多人在怎么备份和恢复MySQL数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么备份和恢复MyS...
    99+
    2024-04-02
  • 如何在MongoDB中使用SQL语句进行数据备份和恢复?
    如何在MongoDB中使用SQL语句进行数据备份和恢复?摘要:MongoDB是一个非关系型数据库,而SQL是关系型数据库的查询语言。但是,有些时候,我们可能需要使用SQL语句来备份和恢复MongoDB中的数据。本文将介绍如何在MongoDB...
    99+
    2023-12-17
    MongoDB 数据备份 SQL语句
  • MySQL 数据备份和数据恢复
    目录 一、数据备份 1、概述 2、MySQLdump命令备份 1)备份单个数据库中的所有表 2) 备份数据中某个或多个表 3) 备份所有数据库 4)备份多个库 5) 只备份一个表或多个表结构 二、数据恢复 三、数据备份与恢复应用 一、数...
    99+
    2023-09-01
    mysql 数据库
  • 如何实现MySQL中表的备份和恢复的语句?
    如何实现MySQL中表的备份和恢复的语句? -- 附具体代码示例引言:在开发中,我们经常需要对MySQL中的表进行备份和恢复,以保证数据的安全性和可靠性。本文将介绍如何利用MySQL的语句来实现表的备份和恢复,并提供具体的代码示例供参考。一...
    99+
    2023-11-08
    - 数据库备份 备份: - mysqldump - 数据库导出 恢复:
  • Mysql的数据备份和恢复
    这篇文章主要介绍“Mysql的数据备份和恢复”,在日常操作中,相信很多人在Mysql的数据备份和恢复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql的数据备份和恢复”...
    99+
    2024-04-02
  • mysql怎么增量备份和恢复数据
    这篇文章主要介绍“mysql怎么增量备份和恢复数据”,在日常操作中,相信很多人在mysql怎么增量备份和恢复数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql怎么增...
    99+
    2024-04-02
  • MySQL中怎么备份和恢复数据库
    MySQL中可以通过mysqldump命令来备份数据库,通过source命令来恢复数据库。 备份数据库: 打开命令行工具,输入以下...
    99+
    2024-04-09
    MySQL 数据库
  • mysql怎么恢复备份数据库
    要恢复MySQL备份数据库,可以按照以下步骤进行操作: 将备份文件复制到MySQL数据库服务器上的合适位置。确保备份文件的权限设...
    99+
    2024-04-02
  • mysql怎么备份与恢复数据
    本篇内容介绍了“mysql怎么备份与恢复数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、直接物理文件...
    99+
    2024-04-02
  • mysql没备份怎么恢复数据
    如果 MySQL 没有备份,恢复数据可能会更加困难。以下是一些可能的方法,但并不保证恢复成功: 使用 MySQL 日志文件:如果...
    99+
    2024-04-09
    mysql
  • Mysql数据库之备份和恢复
     一、为什么要数据备份?   备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误人为,操作错误,运算错误,磁盘故障灾难(如火灾、地震)和盗窃. 二、...
    99+
    2023-09-15
    数据库 mysql
  • Cassandra怎么备份和恢复数据
    Cassandra是一个高度可扩展的分布式数据库系统,有多种方法可以备份和恢复数据。以下是一些常见的方法: 备份数据: 使用Cas...
    99+
    2024-04-02
  • SQL Server数据库之备份和恢复数据库
    目录1. 概述2. 备份类型3. 恢复模式3.1 简单恢复模式3.2 完全恢复模式和大容量日志恢复模式4. 备份数据库5. 恢复数据库1. 概述 在一些对数据可靠性要求很高的行业,若发生意外停机或数据丢失,其损失是十分惨...
    99+
    2023-03-23
    数据库的备份方法 数据库的恢复方式
  • 备份数据库的sql语句怎么写
    小编给大家分享一下备份数据库的sql语句怎么写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!备份数据库的sql语句是“mysql...
    99+
    2024-04-02
  • mysql数据备份及恢复
    这篇文章主要介绍“mysql数据备份及恢复”,在日常操作中,相信很多人在mysql数据备份及恢复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql数据备份及恢复”的疑惑...
    99+
    2024-04-02
  • 怎么在MySQL中使用全库备份数据恢复单表数据
    怎么在MySQL中使用全库备份数据恢复单表数据?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。提取建表语句sed -e '...
    99+
    2024-04-02
  • 如何备份和恢复MySQL数据库
    备份和恢复MySQL数据库可以通过多种方式实现,以下是其中一种常用的方法: 备份MySQL数据库: 使用命令行工具备份数据库: ...
    99+
    2024-04-09
    MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作