0

0

MySQL心得8-2-使用SQL语句备份和恢复表数据_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:41:45

|

1392人浏览过

|

来源于php中文网

原创

bitsCN.com MySQL心得8-2-使用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来跳过第一行。   ●  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 '? ';   注意:在导入数据时,必须根据文件中数据行的格式指定判断的符号。例如,在myfile1.txt文件中字段值是以逗号隔开的,导入数据时一定要使用“TERMINATED BY ','”子句指定逗号为字段值之间的分隔符,与SELECT…INTOOUTFILE语句相对应。 因为MySQL表保存为文件形式,所以备份很容易。但是在多个用户使用MySQL的情况下,为了得到一个一致的备份,在相关的表上需要做一个读锁定,防止在备份过程中表被更新;当恢复数据时,需要一个写锁定,以避免冲突。在备份或恢复完以后要对表进行解锁。 2.   启用日志 二进制日志可以在启动服务器的时候启用,这需要修改C:/Program Files/MySQL文件夹中的my.ini选项文件。打开该文件,找到[mysqld]所在行,在该行后面加上以下格式的一行:  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...     说明: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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

58

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

52

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

24

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

10

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

7

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

406

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

231

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

194

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

150

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 5.1万人学习

Excel 教程
Excel 教程

共162课时 | 15万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号