测试数据本机一张表users有100百万条记录,数据类型

发布时间:2020-01-01  栏目:数据  评论:0 Comments

谬误现身气象

  在cmd中选拔mysql命令,学子新闻表增添数据。使用load
data格局大约批量导入数据。

  计划好文件数据: xueshengxinxi.txt 文件  数据里面以tab键进行分割

  执行 “load data infile 文本数据路线  into table
tab_load_data”
  弹出错误。

图片 1图片 2

#load data (载入数据)语法,要载入数据如下:
    1    张三            男        江西    1
    2    李四            男        四川    2
    3    王五            男        上海    1
    4    赵六            女        湖北    3
    5    孙七            女        湖北    3
    6    周八            男        湖南    1    

#测试数据表
    create table tab_load_data (
        id int auto_increment primary key,
        name varchar(10),
        sex enum('男','女'),
        native varchar(10),
        f5 int
    );    

【点击查阅】测量检验数据德姆o

 

双重实行loadfile:

导入文件到对应表users。

自家的MYSQL学习心得(十六) 备份和重振旗鼓

自笔者的MYSQL学习心得(风流洒脱)
简单语法

自身的MYSQL学习体会(二)
数据类型宽度

自己的MYSQL学习体会(三)
查看字段长度

小编的MYSQL学习心得(四)
数据类型

自家的MYSQL学习心得(五)
运算符

自己的MYSQL学习心得(六)
函数

自个儿的MYSQL学习体会(七)
查询

自个儿的MYSQL学习心得(八) 插入 更新
删除

自身的MYSQL学习心得(九)
索引

自家的MYSQL学习心得(十)
自定义存款和储蓄进程和函数

自己的MYSQL学习心得(十生机勃勃)
视图

自身的MYSQL学习心得(十七)
触发器

本人的MYSQL学习心得(十四)
权限管理

笔者的MYSQL学习心得(十五)
日志

自家的MYSQL学习体会(十七)
优化

自己的MYSQL学习心得(十一)
复制

 

这一篇《笔者的MYSQL学习心得(十九)》将会讲课MYSQL的备份和还原

MYSQL里的备份分为逻辑备份和概况备份,还原的时候相同分逻辑还原和情理还原

 

备份

逻辑备份方法

动用MYSQLDUMP命令备份

MYSQLDUMP是MYSQL提供的八个可怜实用的数据库备份工具。mysqldump命令实践时将数据库备份成贰个文书文件,

该文件中实际包涵了多个CREATE
和INSERT语句,使用那一个言辞能够再次创造表和插入数据

MYSQLDUMP的语法和抉择

mysqldump -u user -p pwd -h host dbname[tbname,[tbname...]]>filename.sql

选项/Option 作用/Action Performed
--add-drop-table
这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除
--add-locks
这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作
-c or - complete_insert
这个选项使得mysqldump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。
--delayed-insert 在INSERT命令中加入DELAY选项
-F or -flush-logs 使用这个选项,在执行导出之前将会刷新MySQL服务器的log.
-f or -force 使用这个选项,即使有错误发生,仍然继续导出
--full 这个选项把附加信息也加到CREATE TABLE的语句中
-l or -lock-tables 使用这个选项,导出表的时候服务器将会给表加锁。
-t or -no-create- info
这个选项使的mysqldump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。
-d or -no-data 这个选项使的mysqldump命令不创建INSERT语句。
在您只需要DDL语句时,可以使用这个选项。
--opt 此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。
-q or -quick 这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。
-T path or -tab = path 这个选项将会创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为table_name.sql,数据文件被命名为table_name.txt.路径名是存放这两个文件的目录。目录必须已经存在,并且命令的使用者有对文件的特权。
-w "WHERE Clause" or -where = "Where clause "
如前面所讲的,您可以使用这一选项来过筛选将要放到 导出文件的数据。
假定您需要为一个表单中要用到的帐号建立一个文件,经理要看今年(2004年)所有的订单(Orders),它们并不对DDL感兴趣,并且需要文件有逗号分隔,因为这样就很容易导入到Excel中。 为了完成这个任务,您可以使用下面的句子:
bin/mysqldump –p –where "Order_Date >='2000-01-01'"
–tab = /home/mark –no-create-info –fields-terminated-by=, Meet_A_Geek Orders
这将会得到您想要的结果。
schema:模式
The set of statements, expressed in data definition language, that completely describe the structure of a data base.
一组以数据定义语言来表达的语句集,该语句集完整地描述了数据库的结构。
SELECT INTO OUTFILE :

mysqldump提供了成都百货上千增选,包涵调试和收缩的,在这里间只是列举最得力的。

运营扶助命令mysqldump –help能够博得一定版本的总体选项列表

 

user表示客商名称;

host表示登陆顾客的主机名称;

pwd为报到密码;

dbname为要求备份的数据库名称;

tbname为dbname数据库中须要备份的数据表,能够钦赐八个供给备份的表;

右箭头“>”告诉mysqldump将备份数据库表定义和数量写入备份文件;

filename为备份文件的名目

 


1、使用mysqldump备份单个数据库中的全体表

数据库的记录是那样的

图片 3

展开cmd,然后推行下边包车型地铁授命

 图片 4

 

能够见见C盘上边已经转移了school_2014-7-10.sql文件

图片 5

运用editplus来张开这么些sql文件

-- MySQL dump 10.13  Distrib 5.5.20, for Win32 (x86)
--
-- Host: 127.0.0.1    Database: school
-- ------------------------------------------------------
-- Server version    5.5.20-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `book`
--

DROP TABLE IF EXISTS `book`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `book` (
  `bookid` int(11) NOT NULL,
  `bookname` varchar(255) NOT NULL,
  `authors` varchar(255) NOT NULL,
  `info` varchar(255) DEFAULT NULL,
  `comment` varchar(255) DEFAULT NULL,
  `year_publication` year(4) NOT NULL,
  KEY `BkNameIdx` (`bookname`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `book`
--

LOCK TABLES `book` WRITE;
/*!40000 ALTER TABLE `book` DISABLE KEYS */;
INSERT INTO `book` VALUES (1,'鍓戝湥','灏忔槑','13','hao',2013);
/*!40000 ALTER TABLE `book` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `student`
--

DROP TABLE IF EXISTS `student`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `student` (
  `stuno` int(11) DEFAULT NULL,
  `stuname` varchar(60) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `student`
--

LOCK TABLES `student` WRITE;
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
INSERT INTO `student` VALUES (2,'xiaofang'),(3,'zhanghai'),(6,'haojie');
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `stuinfo`
--

DROP TABLE IF EXISTS `stuinfo`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `stuinfo` (
  `stuno` int(11) DEFAULT NULL,
  `class` varchar(60) DEFAULT NULL,
  `city` varchar(60) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `stuinfo`
--

LOCK TABLES `stuinfo` WRITE;
/*!40000 ALTER TABLE `stuinfo` DISABLE KEYS */;
INSERT INTO `stuinfo` VALUES (1,'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong');
/*!40000 ALTER TABLE `stuinfo` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2014-07-23 22:04:16

 

能够见见,备份文件富含了一些音信,文件开首首先写明了mysqldump工具的版本号;

接下来是主机音信,以至备份的数据库名称,最终是mysql服务器的版本号5.5.20

 

备份文件接下去的有的是黄金年代对SET语句,这几个讲话将一些种类变量赋值给客户定义变量,以保证被恢复生机的数据库的连串变量和原先

备份时的变量相似

例如:

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

该set语句将近年来系统变量character_set_client的值赋值给客商变量@OLD_CHARACTER_SET_CLIENT

备份文件的末段几行mysql使用set语句复苏服务器系统变量原本的值,比如:

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

该语句将客商定义变量@OLD_CHARACTER_SET_CLIENT
中保存的值赋值给实际的种类变量OLD_CHARACTER_SET_CLIENT 

备份文件中的“–”字符初始的一坐一起注释语句;以“/*!”开头、以“*/”结尾的言辞为可推行的mysql注释,这几个话语可以被mysql实施

但在别的数据库管理种类将被作为注释忽视,这能够进步数据库的可移植性

 

此外注意到,备份文件最早的一些语句以数字起初,那几个数字代表了mysql版本号,该数字告诉我们那几个话语只有在钦命的mysql版本

抑或比该版本高的事态下才干施行。

诸如:40101,申明这几个讲话独有在mysql版本为4.01.01依然更加高版本的标准化下才方可施行

 


2、使用mysqldump备份数据库中的某些表

备份school数据Curry面包车型大巴book表

 

 图片 6

-- MySQL dump 10.13  Distrib 5.5.20, for Win32 (x86)
--
-- Host: 127.0.0.1    Database: school
-- ------------------------------------------------------
-- Server version    5.5.20-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `book`
--

DROP TABLE IF EXISTS `book`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `book` (
  `bookid` int(11) NOT NULL,
  `bookname` varchar(255) NOT NULL,
  `authors` varchar(255) NOT NULL,
  `info` varchar(255) DEFAULT NULL,
  `comment` varchar(255) DEFAULT NULL,
  `year_publication` year(4) NOT NULL,
  KEY `BkNameIdx` (`bookname`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `book`
--

LOCK TABLES `book` WRITE;
/*!40000 ALTER TABLE `book` DISABLE KEYS */;
INSERT INTO `book` VALUES (1,'剑圣','小明','13','hao',2013);
/*!40000 ALTER TABLE `book` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2014-07-23 22:24:29

备份文件中的内容前边边的介绍是千篇一律的,独一不相同的是只含有了book表的CREATE语句和INSERT语句


3、使用mysqldump备份四个数据库

若是要运用mysqldump备份多少个数据库,需求动用–databases参数。

采用–databases参数之后,必得钦点最少叁个数据库的名号,七个数据库名称之间用空格隔绝

使用mysqldump备份school库和test库

图片 7

 备份文件里的剧情,基本上跟第多个例子相符,可是指明了里面包车型客车内容这有个别归属test库,哪大器晚成部分归于school库

图片 8图片 9

-- MySQL dump 10.13  Distrib 5.5.20, for Win32 (x86)
--
-- Host: 127.0.0.1    Database: school
-- ------------------------------------------------------
-- Server version    5.5.20-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: `school`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `school` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `school`;

--
-- Table structure for table `book`
--

DROP TABLE IF EXISTS `book`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `book` (
  `bookid` int(11) NOT NULL,
  `bookname` varchar(255) NOT NULL,
  `authors` varchar(255) NOT NULL,
  `info` varchar(255) DEFAULT NULL,
  `comment` varchar(255) DEFAULT NULL,
  `year_publication` year(4) NOT NULL,
  KEY `BkNameIdx` (`bookname`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `book`
--

LOCK TABLES `book` WRITE;
/*!40000 ALTER TABLE `book` DISABLE KEYS */;
INSERT INTO `book` VALUES (1,'剑圣','小明','13','hao',2013);
/*!40000 ALTER TABLE `book` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `student`
--

DROP TABLE IF EXISTS `student`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `student` (
  `stuno` int(11) DEFAULT NULL,
  `stuname` varchar(60) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `student`
--

LOCK TABLES `student` WRITE;
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
INSERT INTO `student` VALUES (2,'xiaofang'),(3,'zhanghai'),(6,'haojie');
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `stuinfo`
--

DROP TABLE IF EXISTS `stuinfo`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `stuinfo` (
  `stuno` int(11) DEFAULT NULL,
  `class` varchar(60) DEFAULT NULL,
  `city` varchar(60) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `stuinfo`
--

LOCK TABLES `stuinfo` WRITE;
/*!40000 ALTER TABLE `stuinfo` DISABLE KEYS */;
INSERT INTO `stuinfo` VALUES (1,'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong');
/*!40000 ALTER TABLE `stuinfo` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Current Database: `test`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `test`;

--
-- Table structure for table `book`
--

DROP TABLE IF EXISTS `book`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `book` (
  `bookid` int(11) NOT NULL,
  `bookname` varchar(255) NOT NULL,
  `authors` varchar(255) NOT NULL,
  `info` varchar(255) DEFAULT NULL,
  `comment` varchar(255) DEFAULT NULL,
  `year_publication` year(4) NOT NULL,
  KEY `year_publication` (`year_publication`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `book`
--

LOCK TABLES `book` WRITE;
/*!40000 ALTER TABLE `book` DISABLE KEYS */;
INSERT INTO `book` VALUES (12,'dajiahao','NIHAO','??','henhao',1990);
/*!40000 ALTER TABLE `book` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `innodb_monitor`
--

DROP TABLE IF EXISTS `innodb_monitor`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `innodb_monitor` (
  `a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `innodb_monitor`
--

LOCK TABLES `innodb_monitor` WRITE;
/*!40000 ALTER TABLE `innodb_monitor` DISABLE KEYS */;
/*!40000 ALTER TABLE `innodb_monitor` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `test_innodb_lock`
--

DROP TABLE IF EXISTS `test_innodb_lock`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `test_innodb_lock` (
  `A` int(11) DEFAULT NULL,
  `B` varchar(16) DEFAULT NULL,
  KEY `TEST_INNODB_A_IND` (`A`),
  KEY `TEST_INNODB_B_IND` (`B`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `test_innodb_lock`
--

LOCK TABLES `test_innodb_lock` WRITE;
/*!40000 ALTER TABLE `test_innodb_lock` DISABLE KEYS */;
/*!40000 ALTER TABLE `test_innodb_lock` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2014-07-23 22:32:59

View Code

 


4、使用–all-databases参数备份系统中具有的数据库

动用–all-databases没有需求内定数据库名称

图片 10

施行完结之后会爆发all_二〇一六-7-10.sql的备份文件,里面会含有了具有数据库的备份音信

 

提示:借使在服务器上进行备份,何况表均为myisam,应思量选拔mysqlhotcopy

因为能够越来越快地进行备份和还原

接收mysqlhotcopy,若是是Windows操作系统,必要先安装perl脚本组件才干使用,因为mysqlhotcopy是使用perl来编排的

 

 

提示

(1卡塔尔假如您未使用–quick或许–opt选项,那么mysqldump就要转储结果以前把全体内容载入到内存中。那在你转储大数据量的数据库时将会有一些难题。该选项默许是张开的,但能够动用–skip-opt来关闭它。

(2State of Qatar使用–skip-comments能够去掉导出文件中的注释语句

(3卡塔尔(قطر‎使用–compact选项能够只输出最关键的言语,而不出口注释及删除表语句等等

(4卡塔尔(قطر‎使用–database或-B选项,能够转储五个数据库,在这里个选项名后的参数都被确认为数量库名

 


SQLSE库罗德VE冠道逻辑备份

自己意识SQLSETiggoVETiguan的备份概念并从未ORACLE和MYSQL那么多

我们平常都会接收上面包车型地铁多个SQL语句来备份SQLSE途乐VE福睿斯数据库,举个例子备份test库

BACKUP DATABASE test TO DISK='c:\test.bak' 
BACKUP LOG test  TO DISK='c:\test_log.bak' 

第二个SQL是黄金年代体化备份test库,若是加上WITH DIFFERENTIAL正是一丈差九尺备份

第二个SQL是备份test库的日记

实则从我眼中的明亮,SQLSE奥迪Q5VE瑞鹰就是将数据文件和必备的日记新闻归入一个压缩包里面,相仿于MYSQL的物理备份,直接复制文件,只是MYSQL并不曾进展打包压缩

 

SQLSE汉兰达VELX570的逻辑备份

逻辑备份正是生成表定义脚本和数据插入脚本,SQLSEPAJEROVE奥迪Q5二零一零开始扶助生成数据脚本,在SQLSEHighlanderVEEvoque2008从前只帮助生成表定义脚本

自己所用的数据库是SQLSERVER2012 SP1

入选须要生成脚本的数据库

图片 11

例如说本人要导出test表的数码和表定义

图片 12

要选拔布局和数码,而且要筛选索引,那样就能生成表的数据、定义、索引

图片 13

图片 14

图片 15

变化的剧本如下

USE [sss]
GO
/****** Object:  Table [dbo].[test]    Script Date: 2014/7/24 11:27:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[test](
    [a] [int] NULL
) ON [PRIMARY]

GO
INSERT [dbo].[test] ([a]) VALUES (10)
GO

出于test表是从未任何索引的,所以剧本里看不到CREATE INDEX语句

 

 

骨子里各类数据库的备份复苏措施都以八九不离十的

ORACLE冷备份与还原

 

逻辑备份和情理备份

1、导出create table 、create index、insert into 表等语句(逻辑备份)

mysql:mysqldump、load data infile、select into outfile

sqlserver:生成脚本、导入导出向导

oracle:(exp/imp)

 

2、直接复制文件(物理备份)

sqlserver:backup database语句、backup
log语句、停SQLSE奥迪Q5VELAND服务一贯拷贝数据文件

mysql:mysqlhotcopy、innobackupex

oracle:rman、直接将主体文件拷贝到此外的岗位、(exp/imp)、(expdp/impdp)

 

 

 

相仿点:上面包车型大巴各样数据库的各种备份还原方法,每生机勃勃种基本上都会有八个单身的工具来做

譬如说sqlserver导入导出向导正是一个独立的exe来做

oracle的rman也是三个独门的工具

 

 

冷备份和热备份:无论oracle、sqlserver、mysql都有冷备份和热备份的概念

冷备份其实能够省略精晓为:甘休服务举办备份

热备份其实能够简单精晓为:不停息服务开展备份(在线)

下边包车型地铁告风华正茂段落服务,正确的来说应该是终止数据库的写入

 

何以mysql的myisam引擎只帮忙冷备份呢?

大家能够先想转手innodb引擎,innodb引擎是事务性存款和储蓄引擎,每一条语句都会写日记,况且每一条语句在日记里面皆不时光点

那么在备份的时候,mysql能够依附这些日志来开展redo和undo,将备份的时候从不交给的业务进行回滚,已经提交了的拓宽重做

而是myisam不行,myisam是不曾日记的,为了保障生龙活虎致性,只可以停机或然锁表进行备份

在书《MYSQL质量调优和构造划假造计》里面谈到了思想政治工作的效果

图片 16

 

 

世家能够想大器晚成想,为啥sqlserver援助从某二个lsn只怕时刻实行理并答复原数据库,他也是从日志里面读取日志的lsn号来进展回复到某三个lsn时刻的数量只怕某叁个随即的数目

一经下岗日志,那么sqlserver是做不届时点还原的

 

热备份、冷备份

为啥SQLSEGL450VEOdyssey须要甘休SQLSEHavalVE奇骏服务才得以拷贝物理数据文件,为的都以保障数据生龙活虎致性

 

自个儿此前写的风流倜傥篇小说《达梦7的试用
与SQLSESportageVELAND的大约才具相比》,达梦数据库协理脱机还原,实际上脱机备份的时候数据库也是急需停止写入数据的

 图片 17


大意备份方法

1、直接复制整个数据库目录

因为MYSQL表保存为文件形式,所以能够直接复制MYSQL数据库的累积目录以至文件进行备份。

MYSQL的数据库目录地点不自然相仿,在Windows平台下,MYSQL5.6贮存数据库的目录平时暗中认可为

C:\Documents and Settings\All User\Application Data\MySQL\MYSQL
Server 5.6\data

还是其余客户自定义的目录;

在Linux平台下,数据库目录地方平日为/var/lib/mysql/,不相同Linux版本下目录会有两样

 

那是意气风发种简易、连忙、有效的备份方式。要想保持备份黄金时代致,备份前要求对相关表执行LOCK
TABLES操作,然后对表试行

FLUSH
TABLES。那样当复制数据库目录中的文件时,允许其余客商后续查询表。需求FLUSH
TABLES语句来作保以前

备份前将有着激活的索引页写入磁盘。

自然,也足以告意气风发段落MYSQL服务再张开备份操作

 

这种措施固然轻巧,但并不是最棒的秘诀。因为这种方式对INNODB存款和储蓄引擎的表不适用。使用这种方式备份的数码特别还原

到均等版本的服务器中,区别的版本恐怕不匹配。

 

只顾:在mysql版本中,第三个数字代表主版本号,主版本号相似的MYSQL数据库文件格式相近

 

2、使用mysqlhotcopy工具神速备份

mysqlhotcopy是三个perl脚本,最早由Tim Bunce编写并提供。他动用LOCK TABLES
、FLUSH TABLES和cp或scp

来超快备份数据库。他是备份数据库或单个表的最快门路,但他只能运营在数据库目录所在机器上,而且不能不备份myisam类型的表。

语法

mysqlhotcopy db_name_1,...db_name_n /path/to/new_directory

db_name_1…n意味要备份的数据库的名号;

path/to/new_directory内定备份文件目录

 

示例

在Linux上面接受mysqlhotcopy备份test库到/usr/backup

mysqlhotcopy -u root -p test /usr/backup

要想进行mysqlhotcopy,必须能够访问备份的表文件,具备那么些表的SELECT权限、RELOAD权限(以便能够施行FLUSH
TABLES)

和LOCK TABLES权限

 

提醒:mysqlhotcopy只是将表所在目录复制到另八个职位,只好用来备份myisam和archive表。备份innodb表会现身错误音信

由于她复制本地格式的文书,故也不可能移植到别的硬件或操作系统下


 还原

逻辑还原

1、使用mysql命令举办回复

对此早已备份的蕴含CREATE、INSERT语句的文本文件,能够选择myslq命令导入数据库中

 

备份的sql文件中蕴藏CREATE、INSERT语句(有的时候也可以有DROP语句)。mysql命令能够直接实行文书中的这一个讲话

其语法如下:

mysql -u user -p [dbname]<filename.sql

user是进行backup.sql中语句的顾客名;-p代表输入客商密码;dbname是数码库名

如若filename.sql文件为mysqldump工具创设的隐含创建数据库语句的文件,推行的时候无需内定数量库名

用mysql命令将school_二零一六-7-10.sql文件中的备份导入到数据库中

mysql -u root -h 127.0.0.1 -p school<c:\school_2014-7-10.sql

实行语句早先大家亟须建好school数据库,倘诺空头支票复苏进度将会出错。

能够看出表数据皆已经导入到数据库了

图片 18

 

若果已经报到mysql,那么能够采纳source命令导入备份文件

利用source命令导入备份文件school_2014-7-10.sql

图片 19

试行source命令前必需采用use 语句选择好数据库,否则会晤世E揽胜极光RO奥迪Q71046(3D000卡塔尔:NO DATABASE SELECTED 的大谬不然

还或许有有些要精心的是不能不在cmd分界面下施行,无法在mysql工具里面实施source命令,不然会报错

因为cmd是平昔调用mysql.exe来实施命令的

而那一个mysql 编辑工具只是采纳mysql
connector连接mysql,来保管mysql而不是直接调用mysql.exe,所以举办source会报错

图片 20


概况还原

2、直接复制到数据库目录

举例数据库通过复制数据库文件备份,能够一贯复制备份文件到MYSQL数据目录下达成恢复生机。通过这种措施还原时,

必需保险备份数据的数据库和待还原的数据库服务器的主版本号相近。

再者这种方法只对MYISAM引擎有效,对于innodb引擎的表不可用

 

施行还原从前关闭mysql服务,将备份的公文或目录覆盖mysql的data目录,运行mysql服务。

对此Linux操作系统来讲,复制完文件须要将文件的客户和组校勘为mysql运维的客商和组,平常客户是mysql,组也是mysql


3、mysqlhotcopy快捷还原

mysqlhotcopy备份后的公文也能够用来平复数据库,在mysql服务器结束运营时,将备份的数据库文件复制到mysql寄存数据的岗位

(mysql的data文件夹),重新启航mysql服务就可以。

生机勃勃旦根顾客实践该操作,必需钦定数据库文件的主人,输入语句如下:

chown -R mysql.mysql /var/lib/mysql/dbname

 

 

从mysqlhotcopy复制的备份复苏数据库

cp -R /usr/backup/test  usr/local/mysql/data

进行完该语句,重启服务器,mysql将苏醒到备份状态

 

小心:倘若急需还原的数据库已经存在,则在运用DROP语句删除已经存在的数据库之后,恢复生机能力成功。

其他mysql不一致版本之间必需同盟,恢复生机今后的多少才足以采取!!


数据库迁移

数据库迁移正是把多少从一个种类活动到另一个系统上。

搬迁的日常原因:

1、须求设置新的数据库服务器

2、mysql版本更新

3、数据库管理连串改造(从SQLSE安德拉VEPAJERO迁移到mysql)

 

相近版本的MYSQL数据库之间迁移

生龙活虎律版本mysql数据库间的迁移正是主版本号相像的mysql数据库直接开展数据库移动。

前方解说备份和还原的时候,知道最简便易行的方式就是复制数据库文件目录,可是这种艺术只相符于myisam表

对于innodb表,不可能直接复制文件来备份数据库

 

最常用的措施是行使mysqldump导出多少,然后在指标数据库服务器使用mysql命令导入

将www.abc.com主机上的mysql数据库全体搬迁到www.bcd.com主机上。

在www.abc.com主机上施行以下命令:

mysqldump -h www.abc.com -u root -p dbname |
mysql -h www.bcd.com -u root -p

mysqldump导入的数码直接通过管道符|,传给mysql命令导入到主机www.bcd.com数据库中,dbname为急需迁移的数据库名称

豆蔻梢头经要动迁全部数据库,能够动用–all -databases参数


差别版本的mysql数据库之间的迁徙

因为数据库进级,供给将旧版本mysql数据库中的数据迁移到新本子数据库中。

mysql服务器晋级,要求先甘休服务,然后卸载旧版本,并安装新本子的mysql,这种修正方法很简短。

意气风发经想保留旧版本中的客户访谈调节音信,则要求备份mysql的mysql库,

在新本子mysql安装到位后,重新读入mysql备份文件中的音信

 

旧版本和新本子的mysql恐怕应用分歧的暗中认可字符集,比如mysql.4.x中山大学部用到latin1作为暗中同意字符集,

而mysql5.x的私下认可字符集为utf8。就算数据库中有中文数据,迁移进度中要求对暗中认可字符集进行改良,不然或然不也许平常显示结果

 

新本子对旧版本有早晚包容性。从旧版本的mysql向新本子mysql迁移时,对于myisam引擎的表,能够直接复制数据库文件,

也得以用mysqlhotcopy工具、mysqldump工具。

对于innodb引擎的表平时只好动用mysqldump将数据导出。然后采取mysql命令导入指标服务器。

从新本子向旧版本mysql迁移数据时要小心,最佳使用mysqldump命令导出,然后导入目的数据库中。


今非昔比数据库之间的搬迁

昔不方今类型的数据库之间的搬迁,是指把mysql数据库迁移到任何的数据库,举例从mysql迁移到oracle,从oracle迁移到mysql

从mysql迁移到SQLSERVER等。

 

搬迁以前,须求精通不一致数据库的布局,比较他们的异样。分化数据库定义雷同类别的多寡的尤为重要字也许两样。

举个例子:mysql中国和东瀛期字段分为DATE 和TIME三种,而ORACLE的日子字段唯有DATE。

 

数据库迁移可以选拔一些工具,举例,在Windows系统下,能够行使MyODBC实现mysql和SQLSE本田CR-VVE途睿欧之间的迁徙(使用SQLSE卡宴VEHighlander导入导出向导)

mysql官方提供的工具:MYSQL Migration
Toolkit也能够在分歧数据库间开展多少迁移。


表的导入导出

 

MYSQL数据库能够将数据导出成sql文本文件、xml文件、html文件。相仿那个导出文件也足以导入到MYSQL数据库中

貌似异构数据库迁移都以运用文本文件的不二诀窍来导数据

 

导出 

 

1、用SELECT…INTO
OUTFILE导出文本文件

mysql导出多少时,允许利用含有表定义的select语句实行多少的导出操作

该公文被创制在服务器主机上,由此必得有文件写入权限(FILE权限State of Qatar,才干运用此语法

SELECT INTO…OUTFILE语法:

select columnlist  from Table WHERE condition  into outfile 'filename' [OPTIONS]
fields terminated by 'VALUE'
fields [OPTIONALLY]  ENCLOSED BY 'VALUE'
fields ESCAPED BY 'VALUE'
lines STARTING by 'VALUE'
lines terminated by 'VALUE'

into
outfile语句的功力就是把前面select语句询问出来的结果导出到名字为“filename”的外表文件中

[OPTIONS]风流倜傥对为可选参数,[OPTIONS]有个别的语法包含FILED和LINES子句,其大概取值为:

● 田野先生s子句:在FIELDS子句中有八个子句:TERMINATED BY、 [OPTIONALLY]
ENCLOSED BY和ESCAPED BY。

就算钦定了FIELDS子句,则这四个子句中足足要钦赐二个。
(1)TERMINATED BY用来钦赐字段值之间的标志,比如,“TERMINATED BY
‘,’”钦定了逗号作为五个字段值之间的标记,默感觉“\t”制表符。
(2)ENCLOSED BY子句用来内定包裹文件中字符值的暗记,比如,“ENCLOSED BY ‘
” ‘”表示文件中字符值放在双引号之间,

若加上关键字OPTIONALLY表示具有的值都坐落于双引号之间,则只有CHAPRADO和VARCHAKuga等字符数据字段被总结。

(3)ESCAPED BY子句用来钦点转义字符,比方,“ESCAPED BY
‘*’”将“*”钦赐为转义字符,代替“\”,如空格将意味为“*N”。
● LINES子句:在LINES子句中选择TERMINATED BY钦赐风流倜傥行截至的标识,如“LINES
TERMINATED BY ‘?’”表示黄金时代行以“?”作为实现标识,暗许值为“\n”。

 TERMINATED BY也是一样的准绳

 

FIELDS子句和LINES子句都以自行选购的,不过意气风发旦几个都被钦命了,FIELDS子句必得放在LINES子句的前边

 

SELECT
INTO…OUTFILE只好在本机实施,如若要在此外服务器上导出多少,则必要采纳上面发号布令来变化文书

mysql -e "select ...">filename

-e, –execute=name  Execute command and quit. (Disables –force and
history

 

SELECT INTO…OUTFILE是LOAD DATA
INFILE的补语。用于语句的OPTIONS部分的语法满含一些FIELDS子句和LINES子句

那么些子句与LOAD DATA INFILE语句同期使用

 

动用SELECT INTO…OUTFILE将test数据库中的person表的笔录导出到文本文件

建表脚本

图片 21图片 22

USE test;

create table person
(
ID INT  PRIMARY KEY AUTO_INCREMENT,
Name varchar(20) not null,
Age INT UNSIGNED,
job varchar(90) not null
)engine=innodb default charset=utf8  ; 

INSERT INTO person(name,age,job) VALUES ('green',29,'lawer'),('suse',26,'dancer'),('evans',27,'sports man'),('mary',26,'singer');

SELECT * FROM `person` ;

View Code

输入指令如下

SELECT * FROM test.person  INTO  OUTFILE  "C:\person0.txt" ;

出于钦点了INTO OUTFILE
子句,SELECT将查询出来的3个字段的值保存到C:\person0.txt文件,展开文件内容如下

1    green    29    lawer
2    suse    26    dancer
3    evans    27    sports man
4    mary    26    singer

能够看出私下认可情形下,MYSQL使用制表符“\t”分隔不一样的字段,字段未有被其余字符括起来

其它在Windows平台下,使用记事本展开该文件,显示的格式与这里并不相仿,那是因为Windows系统下回车换行为“\r\n”

默许换行符为“\n”,因而会在person.txt中或然看见形似羊毛白方块的字符,全部的笔录也会在同意气风发行显示

 

暗许情状下,NULL值会展现为“\N”,转义字符会展现为“\”

 

行使SELECT ..INTO
OUTFILE将test库中的person表中的记录导出到文本文件,使用FIELDS选项和LINES选项,须求字段之间

利用逗号“,”间距,全体字段值用双引号括起来,定义转移字符为单引号“\’”

SELECT * FROM test.person  INTO  OUTFILE  "C:\person1.txt" 
FIELDS
TERMINATED BY ','
ENCLOSED BY '\''
ESCAPED BY '\''
LINES
TERMINATED BY '\r\n';

在C盘下转移的person1文件内容

'1','green','29','lawer'
'2','suse','26','dancer'
'3','evans','27','sports man'
'4','mary','26','singer'

FIELDS  TERMINATED BY ‘,’表示字段之间用逗号分隔

ENCLOSED BY ‘\”表示各个字段用双引号括起来

ESCAPED BY ‘\”代表将系统默许的转移字符替换为单引号

LINES TERMINATED BY
‘\r\n’表示每行以回车换行符结尾,保险每一条记下占大器晚成行


2、用mysqldump命令导出文本文件

而外行使SELECT…INTO OUTFILE导出文本文件之外,也足以应用mysqldump

mysqldump不只能够将数据导出包罗CREATE、INSERT的sql文件,也得以导出为纯文本文件

 

mysqldump创立四个包罗创立表的CREATE
TABLE语句的tablename.sql文件,和一个包蕴其数量

的tablename.txt文件。mysqldump导出文本文件的大旨语法如下

mysqldump -T path -u root -p dbname [tables][OPTIONS]

--fields-terminated-by=
--fields-enclosed-by=
--fields-optionally-enclosed-by=
--fields-escaped-by=
--lines-terminated-by=

除非钦赐了-T参数才足以导出纯文本文件;path表示导出数据的目录

tables为钦赐要导出的表名称,假如不内定,将导出dbname的全数表

 

基本上每一种选项跟SELECT ..INTO OUTFILE语句中的OPTIONS各类参数设置相像

不一致的是,等号前面的value值不要用引号括起来

 

应用mysqldump将test库的person表的笔录导出到文本文件,试行的授命如下

mysqldump -T C:\ -u root -h 127.0.0.1  -p test person

此间要细心的是,路线这里不可能先创立好person.txt文件,不然会报错,跟SELECT
..INTO OUTFILE语句是平等的

在C盘会生成一个person.txt文件和person.sql文件,内容如下

图片 23

person.sql

-- MySQL dump 10.13  Distrib 5.5.28, for Win32 (x86)
--
-- Host: 127.0.0.1    Database: test
-- ------------------------------------------------------
-- Server version    5.5.28-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `person`
--

DROP TABLE IF EXISTS `person`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `person` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(20) NOT NULL,
  `Age` int(10) unsigned DEFAULT NULL,
  `job` varchar(90) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2014-07-27 23:56:01

person.sql的从头到尾的经过跟此前解释的是同风姿浪漫的

person.txt

1    green    29    lawer
2    suse    26    dancer
3    evans    27    sports man
4    mary    26    singer

 


3、使用mysql命令导出文本文件

mysql是一个功用丰盛的工具命令,使用mysql还足以在命令行方式下实践SQL指令,将查询结果导入到文本文件中。

比较mysqldump,mysql工具导出的结果可读性越来越强

设若mysql服务器是独立的机器,客户是在四个client上拓宽操作,顾客要把多少结果导入到client机器上,能够使用mysql
-e语句

主干格式如下:

mysql -u root -p --execute="SELECT 语句" dbname >filename.txt

该命令使用–execute
选项,表示试行该采用前边的口舌并退出,前边的言语必得用双引号括起来

dbname为要导出的数据库名称,导出的文件中区别列之间接选举取制表符分隔,第大器晚成行李包裹涵了字段名称

 

使用mysql命令,导出test库的person表记录到文本文件,输入语句如下:

mysql -u root -p --execute="SELECT * FROM person;" test>C:\person3.txt

person3.txt的剧情如下

ID    Name    Age    job
1    green    29    lawer
2    suse    26    dancer
3    evans    27    sports man
4    mary    26    singer

可以看出,person3.txt文件中包蕴了各类字段的称号和各条记下,假若某行记录字段超多,大概后生可畏行无法完全显示,能够采纳

–vertical参数,将每条记下分为多行呈现

 

应用mysql命令导出test库的person表使用–vertical参数字呈现示

mysql -u root -p  --vertical --execute="SELECT * FROM person;" test>C:\person4.txt

*************************** 1. row ***************************
  ID: 1
Name: green
 Age: 29
 job: lawer
*************************** 2. row ***************************
  ID: 2
Name: suse
 Age: 26
 job: dancer
*************************** 3. row ***************************
  ID: 3
Name: evans
 Age: 27
 job: sports man
*************************** 4. row ***************************
  ID: 4
Name: mary
 Age: 26
 job: singer

借使person表中记录内容太长,那样显示将会特别便于阅读

 

使用mysql命令导出test库的person表记录到html文件,输入语句如下

mysql -u root -p --html --execute="SELECT * FROM PERSON;"test >C:\person5.html

图片 24

只要要导出为xml文件,那么使用–xml选项

选用mysql命令导出test库的person表的中记录到xml文件

mysql -u root -p --xml --execute="SELECT * FROM PERSON;" test >C:\person6.xml

<?xml version="1.0"?>

<resultset statement="SELECT * FROM PERSON" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <row>
    <field name="ID">1</field>
    <field name="Name">green</field>
    <field name="Age">29</field>
    <field name="job">lawer</field>
  </row>

  <row>
    <field name="ID">2</field>
    <field name="Name">suse</field>
    <field name="Age">26</field>
    <field name="job">dancer</field>
  </row>

  <row>
    <field name="ID">3</field>
    <field name="Name">evans</field>
    <field name="Age">27</field>
    <field name="job">sports man</field>
  </row>

  <row>
    <field name="ID">4</field>
    <field name="Name">mary</field>
    <field name="Age">26</field>
    <field name="job">singer</field>
  </row>
</resultset>

 


 导入

 

1、使用LOAD DATA INFILE
格局导入文本文件

mysql允许将数据导出到表面文件,也足以从外表文件导入数据。

MYSQL提供了生机勃勃部分导入数据的工具,这一个工具备:LOAD
DATA语句、source命令、mysql命令

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,...]] 

load data infile语句从一个文件文件中以相当高的快慢读入五个表中。
利用这一个命令在此之前,mysqld进度(服务) 必得已经在运行。
当读取的公文文件不在本机,而是坐落于服务器上的文件文件时,使用load data
infile语句,在服务器主机上您必须有file的权力。

 

 

1
、尽管您钦命关键词low_priority,那么MySQL将会等到未有其余人读取这么些表的时候,
才插入数据。举例如下的下令:

load data low_priority infile "/home/mark/data.sql" into table Orders;

2 、如若钦定local关键词,则注解读取的文件在本机,那么必需钦赐local参数。

3 、replace和ignore参数调整对现成表的唯生机勃勃键记录重复的管理。

假定你钦命replace,新行将代替有周边的独占鳌头键值的幸存行。

 (1)即使您钦定ignore,跳过有唯风姿浪漫键的存活行的再次行的输入。

 (2)借使你不点名其余贰个选取,当找到重复键时,出现一个谬误,况兼文本文件的结余部分被忽视。

 

FIELDS  TERMINATED BY ‘,’表示字段之间用逗号分隔

ENCLOSED BY ‘\”表示每种字段用双引号括起来

ESCAPED BY ‘\”代表将系统暗中同意的调换字符替换为单引号

LINES STARTING BY
”表示每行数据开端的字符,可感到单个或多少个,暗许不是有其它字符

LINES TERMINATED BY
‘\r\n’代表每行以回车换行符结尾,保险每一条记下占后生可畏行

[IGNORE number LINES]
选项表示忽视文件开头处的行数,number表示忽视的行数。

 

好些个格式上的参数跟SELECT…INTO OUTFILE是后生可畏致的

 

使用LOAD DATA命令将C:\person0。txt文件中的数据导入到test库中的test表

LOAD DATA INFILE 'C:\person0.txt' INTO TABLE test.person

 先删除person表里的数据,然后实施LOAD DATA命令

图片 25

 

行使mysqlimport命令导入文本文件

2、使用mysqlimport命令导入文本文件

mysqlimport是贰个独自的exe,他提供了许多与LOAD DATA INFILE语句相通的效益

绝大大多选项直接对应LOAD DATA INFILE子句

图片 26

mysqlimport的语法如下

mysqlimport -u root -p dbname filename.txt  [OPTIONS]

--[OPTIONS] 选项
FIELDS  TERMINATED BY 'value'
ENCLOSED BY 'value'
ESCAPED BY 'value'
LINES TERMINATED BY 'value'
IGNORE LINES

[OPTIONS] 选项基本上与LOAD DATA INFILE 语句是黄金时代律的,这里不做牵线了

mysqlimport无法钦定导入的表名称,表名称由导入文件名称分明,即文件名作为表名,导入数据早先该表必得存在

 

使用mysqlimport命令将C:\目录下person.txt文件内容导入到test库

先删除test库的person表的数量

DELETE FROM `person`;

 

person.txt文件内容

1    green    29    lawer
2    suse    26    dancer
3    evans    27    sports man
4    mary    26    singer

一声令下如下

mysqlimport -u root -p  test C:\person.txt

图片 27

导入成功

图片 28

 

mysqlimport的广公投项:

显示帮助消息并退出。

·         --columns=column_list, -c column_list

该选项采用用逗号分隔的列名作为其值。列名的顺序指示如何匹配数据文件列和表列。

·         --compress,-C

压缩在客户端和服务器之间发送的所有信息(如果二者均支持压缩)。

·         ---debug[=debug_options],-# [debug_options]

写调试日志。debug_options字符串通常是'd:t:o,file_name'。

·         --delete,-D

导入文本文件前清空表。

·         --fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--lines-terminated-by=...

这些选项与LOAD DATA INFILE相应子句的含义相同。参见13.2.5节,“LOAD DATA INFILE语法”。

·         --force,-f

忽视错误。例如,如果某个文本文件的表不存在,继续处理其它文件。不使用--force,如果表不存在则mysqlimport退出。

·         --host=host_name,-h host_name

将数据导入给定主机上的MySQL服务器。默认主机是localhost。

·         --ignore,-i

参见--replace选项的描述。

·         --ignore-lines=n

忽视数据文件的前n行。

·         --local,-L

从本地客户端读入输入文件。

·         --lock-tables,-l

处理文本文件前锁定所有表以便写入。这样可以确保所有表在服务器上保持同步。

·         --password[=password],-p[password]

当连接服务器时使用的密码。如果使用短选项形式(-p),选项和 密码之间不能有空格。如果在命令行中--password或-p选项后面没有 密码值,则提示输入一个密码。

·         --port=port_num,-P port_num

用于连接的TCP/IP端口号。

·         --protocol={TCP | SOCKET | PIPE | MEMORY}

使用的连接协议。

·         --replace,-r

--replace和--ignore选项控制复制唯一键值已有记录的输入记录的处理。如果指定--replace,新行替换有相同的唯一键值的已有行。如果指定--ignore,复制已有的唯一键值的输入行被跳过。如果不指定这两个选项,当发现一个复制键值时会出现一个错误,并且忽视文本文件的剩余部分。

·         --silent,-s

沉默模式。只有出现错误时才输出。

·         --socket=path,-S path

当连接localhost时使用的套接字文件(为默认主机)。

·         --user=user_name,-u user_name

当连接服务器时MySQL使用的用户名。

·         --verbose,-v

冗长模式。打印出程序操作的详细信息。

·         --version,-V

显示版本信息并退出。

 

提示:

LOAD DATA INFILE语句中有叁个mysqlimport工具中并未特色: 

LOAD DATA INFILE 可以按钦赐的字段把文件导入到数据库中。

当大家要把多少的一片段内容导入的时候,这一个天性就很首要。

举个例子说,大家要从Access数据库晋级到MySQL数据库的时候,必要参预一些字段(列/字
段/田野先生)到MySQL数据库中,以适应一些格外的内需。 

其不时候,大家的Access数据库中的数据照旧是可用的,不过因为这么些数据的字段(田野先生卡塔尔与MySQL中的不再相配,由此而一点办法也想不出来再利用mysqlimport工具。

虽说,我们照样可以行使LOAD DATA
INFILE,下边包车型地铁事例显示了什么向内定的字段(田野同志卡塔尔(قطر‎中程导弹入数据: 

LOAD DATA INFILE "/home/Order.txt" INTO TABLE Orders(Order_Number, Order_Date, Customer_ID); 

 

如你所见,我们能够钦定必要的字段(田野(field卡塔尔国s)。这么些内定的字段依旧是以括号括起,由逗号分隔的,假如你脱漏了内部任何三个,MySQL将会提示您^_^ 

 


如何筛选备份工具?

直接复制数据文件是无限间接、火速的备份方法,但瑕玷是差不离不能够促成增量备份。

备份时必得确定保障未有选择那个表。借使在复制叁个表的物理数据文件的还要服务器正在改革他,则复制无效。

备份文件时,最棒关闭服务器,然后再度起动服务器,为了保险数据的生龙活虎致性,须要在备份文件前执行以下SQL

FLUSH TABLES WITH READ LOCK;

约等于把内部存款和储蓄器中的数目刷新到磁盘中,同有的时候候锁定数据表,以承保复制进度中不会有新的数额写入。

这种艺术备份出来的数据恢复生机很简短,直接复制回原本的数据库目录下就能够

 

mysqlhotcopy是一个PEKugaL程序,他接纳LOCK TABLES、FLUSH
TABLES和CP或SCP来急忙备份数据库

她是备份数据库或单个表的最快的不二等秘书诀,但她只得运维在数据库文件所在机器上,何况mysqlhotcopy只好用来备份myisam表

mysqlhotcopy符合于Mini数据库的备份,数据量十分小,能够行使mysqlhotcopy程序每一天进行三遍完全备份

 

mysqldump将数据表导出为SQL脚本,在差别的MYSQL版本之间晋级时相对相比较确切,那也是最常用的备份方法。

mysqldump比一贯复制要慢些。

 


利用mysqldump备份整个数据库成功,把表和数据库删除了,但使用备份文件却无法重作冯妇数据库?

并发这种情形是因为备份的时候未有一些名–databases参数。私下认可情状下,如若只钦点数据库名称,mysqldump

备份的是数据库中的全数表,而不包罗数据库的创立语句,如下

mysqldump -u root -p booksdb >c:\booksdb_2014-7-1.sql

该语句只备份了booksdb数据库下的具备表,读者张开该公文,能够看来文件中不分包创设booksdb数据库

的CREATE
DATABASE语句,因而只要把booksdb也删除了,使用该sql文件不能够东山复起早先的表,

回复时会现身E索罗德RO安德拉 1046(3D000卡塔尔国:NO DATABASE SELECTED 的错误消息

而下面包车型客车说话,数据库删除之后,能够符合规律还原备份时的气象

mysqldump -u root -p --databases booksdb>C:\booksdb_db_2014-7-1.sql

该语句不仅仅备份了具有数据库下的表布局,並且包含成立数据库的言辞


总结

那风流浪漫节介绍了MYSQL中的备份和还原,还恐怕有数据库的迁徙,异构数据库之间的搬迁基本上都用导出文件文件的方法

固然是小数据量尚能够,假设数据量非常大,导出文本文件也会极大,不是太可取

期望那篇作品对我们有帮带

 

如有不没有错地点,接待大家拍砖o(∩_∩)o 

正文版权归小编全体,未经小编同意不得转发。

一网打尽思路(进程)

  1)
既然错误提醒表达运营了secure-file-priv那几个选项,不能够施行load服务,那就找到MYSQL的安排文件”my.ini”
中该配置项。

  2) 配置前,先关闭mysql服务

  3)
打开my.ini,寻觅关键字“secure-file-priv”找到这一个选项后,直接注释掉这些选项,保存后,运维MYSQL服务

      图片 29

  4) 结果依然相像的大谬不然。表达注释没有成效。那是怎么回事了?

    实施命令 “show variables like
‘%secure%’”发掘原先作者注释掉后,secure-file-priv的值为NULL证实防止导入导出。        

    那申明注释掉是可怜的。不删配置文件条款,那只能改良目录好了。

  5)改良路径,试行命令 “show
variables like ‘%secure%’” 查看 , 重启MYSQL。

    图片 30
    图片 31

  6)再试行load data, 实践成功

  图片 32

  更复杂的load用法能够查看mysql手册。 到此,该难题息灭。

保存,重启mysql。

图片 33

三, 小结表明

  从本错误中吸取:

  1) load data : 可以从四个外表的记事本文件中程导弹入数据到有些表中。

    该记事本中的数据常常必要“比较有条不紊”,豆蔻梢头行文本对应风度翩翩行数据,大器晚成行中用某种字符(如用tab符)来划分三个叁个字段的值

  2) secure-file-priv这一个参数用来节制数量导入和导出操作的功能。

    如:执行LOAD,SELECT…INTO
OUTFILE语句和LOAD_FILE(卡塔尔国函数。那些操作供给file权限。

  3)若是secure-file-priv那个参数设为三个目录名,MYSQL服务只允许这么些目录中推行文书的导入和导出操作。

    这么些目录必得存在,MYSQL服务不会创设它。

  4)
要是secure-file-priv那些参数为NULL,MYSQL服务会禁止导入和导出操作。

 

 

 

推行命令查看:

能够看出users.txt生成在同级test数据库目录。。。
紧接着施行:

荒诞描述

  使用load data 导入文本数量连接弹出错误(Error 1290…..)如下:

  ERROR 1290 (HY000): The
MySQL server is running with the –secure-file-priv option so it
cannot execute this statement

    图片 34

 

select * from users into outfile 'users.txt'; //users.txt文件在mysql的dat

mysql 新本子下secure-file-priv字段 :
secure-file-priv参数是用来界定LOAD DATA, SELECT … OUTFILE, and
LOAD_FILE(卡塔尔(قطر‎传到哪个钦定目录的。

create index name using BTREE on users(name);

 

图片 35

只记录消除难点的情势。

show variables like ‘%secure%’;查看 secure-file-priv 当前的值是何许?

问题: 在执行mysql
函数load_file时,该函数将加载钦赐文件的剧情,存款和储蓄至相应字段。如:

load data infile 'users.txt' into table users;

留下评论

网站地图xml地图