澳门新萄京:迁移方法总结,基于centos的mysql学习
分类:数据库

据书上说centos的mysql学习补充一

导出mysql数据库中的有个别数据库的sql脚本--也正是说将该数据库的结商谈数据导入到3个sql脚本中,之后方可经过该sql脚本恢复生机该数据库。

 

mysqldump -u mysql(用户名:mysql) -pmysql(密码:mysql) p2pserver(数据库名:p2pserver) > p2pserver.sql(脚本名:p2pserver.sql)

 

设若急需导出全体的数据库脚本

mysqldump -u mysql(用户名:mysql) -pmysql(密码:mysql) -A > p2pserver.sql(文件名:p2pserver.sql)

那是内部关于wp_users的sql语句:

 

DROP TABLE IF EXISTS `wp_users`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `wp_users` (
  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_login` varchar(60) NOT NULL DEFAULT '',
  `user_pass` varchar(64) NOT NULL DEFAULT '',
  `user_nicename` varchar(50) NOT NULL DEFAULT '',
  `user_email` varchar(100) NOT NULL DEFAULT '',
  `user_url` varchar(100) NOT NULL DEFAULT '',
  `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `user_activation_key` varchar(60) NOT NULL DEFAULT '',
  `user_status` int(11) NOT NULL DEFAULT '0',
  `display_name` varchar(250) NOT NULL DEFAULT '',
  PRIMARY KEY (`ID`),
  KEY `user_login_key` (`user_login`),
  KEY `user_nicename` (`user_nicename`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

关于P帕杰罗IMAY KEY和KEY那七个至关首要字是怎么意思呢?

 

PHummerH二IMAY KEY是主键,保障数据的唯1性;

KEY是索引约束,对表中字段举行约束索引,常见的有foreign key。KEY是任重先生而道远字,在每一张表全体记录中唯1,在平时的表一般能够省去那一项。假如设置了该重大字,在查询表的时候会加速查询,然而会大增其余担当。

导出mysql数据库中的某些数据库的sql脚本--也正是说将该数据库的结商谈数目导入到三个sql脚本中,之后方可经过...

背景

mysql差别数据库不一样数量表导入数据,mysql导入

背景

现行反革命自个儿有如此2个急需:

数码库A的user表要求导入到数据库B的account表
user表字段:uid,username,email,password,regdate,salt
account表字段:id,name,email,password,type,salt
导入的字段唯有username,email,password,salt,并且regdate供给符合某些条件
下边分三种景况来写sql,首要差异insert into和replace into

情况

导入的数目在B库的表中完全不设有

直接insert into就好,使用replace into效果一样

INSERT INTO `B`.`account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`users`
WHERE regdate>1418313600

导入的数据部分存在

多少部分存在为了不相同供给在七个表增多唯一索引,那一个唯一索引(UNIQUE)必须是导入的字段里面包车型客车值
本身在七个表中分别为username和name字段增多唯一索引
一向调换

replace into在操作的时候就算两表数据重复(必须定义UNIQUE),会先删掉那一行(注意是一整行),然后再推行insert into

以至的后果正是,account表中的type字段假如原来有值,会一向删掉,玉石俱焚复插入,即形成默许值了

REPLACE INTO `B`.`account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`users`
WHERE regdate>1418313600

忽视重复

用IGNORE关键字,若是蒙受重复,不会操作当前行

INSERT IGNORE INTO `B`.`account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`users`
WHERE regdate>1418313600

一些更新

譬借使只想翻新password和salt字段,能够用ON DUPLICATE KEY UPDATE

INSERT INTO `B`.`u_account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`bbs_ucenter_members`
WHERE regdate>1418313600 ON DUPLICATE KEY UPDATE PASSWORD=VALUES(PASSWORD),salt=VALUES(salt)

总结

replace into相比较暴力,网络也会有说慎重使用的,最棒用insert into代替

疑问

如上的操作是三个数据库在一如以后台服务器上的,直接一条sql就足以化解
借使要导的七个库在不相同的七个服务器上要怎么办呀?
脚下一时半刻的方式:
将A库中的user表导入到B库所在的另壹台服务器上,然后写一条sql化解
如故查询出钦命数量,导出sql,在sql少校insert into替换为insert ignore into(有局限性)

如上所述正是本文的全体内容了,希望我们能够欣赏。

背景 未来自己有诸如此类3个必要: 数据库A的user表须要导入到数据库B的account表 user表字段:ui...

本身的MYSQL学习心得(拾4),mysql学习心得

最近几年接手一齐老项目数据库 SQL Server 到 MySQL 的搬迁。因而迁移前开始展览了有的应用研商和小结。下边是一些 SQL Server 到 MySQL 的迁移方法。

明天自己有这么三个急需:

本人的MYSQL学习心得(十四)

本身的MYSQL学习心得(一)

本身的MYSQL学习心得(二)

本人的MYSQL学习心得(叁)

自小编的MYSQL学习心得(四)

我的MYSQL学习心得(5)

自家的MYSQL学习心得(陆)

自己的MYSQL学习心得(7)

本身的MYSQL学习心得(八)

本人的MYSQL学习心得(9)

自己的MYSQL学习心得(拾)

自己的MYSQL学习心得(10壹)

作者的MYSQL学习心得(十2)

自家的MYSQL学习心得(10叁)

 

那壹篇《小编的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为备份文件的名目

 


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

数据库的笔录是那样的

澳门新萄京 1

开发cmd,然后实践上面的下令

 澳门新萄京 2

 

能够看出C盘上面已经变化了school_2014-7-10.sql文件

澳门新萄京 3

动用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 @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @[email protected]@TIME_ZONE */;
/*!40103 SET TIME_ZONE=' 00:00' */;
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@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 [email protected]_TIME_ZONE */;

/*!40101 SET [email protected]_SQL_MODE */;
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
/*!40014 SET [email protected]_UNIQUE_CHECKS */;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
/*!40111 SET [email protected]_SQL_NOTES */;

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

 

能够观察,备份文件包涵了有的音讯,文件开首首先写明了mysqldump工具的版本号;

接下来是主机新闻,以及备份的数据库名称,最后是mysql服务器的版本号五.伍.20

 

备份文件接下去的有的是部分SET语句,那几个讲话将一些类别变量赋值给用户定义变量,以保证被苏醒的数据库的种类变量和原先

备份时的变量同样

例如:

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;

该set语句将方今系统变量character_set_client的值赋值给用户变量@OLD_CHARACTER_SET_CLIENT

备份文件的终极几行mysql使用set语句恢复生机服务器系统变量原本的值,比方:

/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;

该语句将用户定义变量@OLD_CHARACTER_SET_CLIENT 中保留的值赋值给实际的系统变量OLD_CHARACTER_SET_CLIENT 

备份文件中的“--”字符开始的表现注释语句;以“/*!”开头、以“*/”结尾的语句为可进行的mysql注释,那一个言辞能够被mysql施行

但在其他数据库处理种类将被用作注释忽略,那能够拉长数据库的可移植性

 

除此以外注意到,备份文件初阶的有的语句以数字起初,这一个数字代表了mysql版本号,该数字告诉我们这几个讲话只有在内定的mysql版本

要么比该版本高的景观下工夫实行。

譬喻说:40十一,评释这一个话语唯有在mysql版本为四.0壹.01或许更加高版本的条件下才得以实行

 


2、使用mysqldump备份数据库中的有个别表

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

 

 澳门新萄京 4

-- 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 @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @[email protected]@TIME_ZONE */;
/*!40103 SET TIME_ZONE=' 00:00' */;
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@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 [email protected]_TIME_ZONE */;

/*!40101 SET [email protected]_SQL_MODE */;
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
/*!40014 SET [email protected]_UNIQUE_CHECKS */;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
/*!40111 SET [email protected]_SQL_NOTES */;

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

备份文件中的内容前面边的牵线是大同小异的,唯壹分裂的是只含有了book表的CREATE语句和INSERT语句


三、使用mysqldump备份五个数据库

要是要运用mysqldump备份多少个数据库,须求运用--databases参数。

动用--databases参数之后,必须钦赐至少2个数据库的名目,多少个数据库名称之间用空格隔离

使用mysqldump备份school库和test库

澳门新萄京 5

 备份文件里的源委,基本上跟第二个例子同样,可是指明了中间的剧情那有个别属于test库,哪1部分属于school库

澳门新萄京 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 @[email protected]@CHARACTER_SET_CLIENT */; /*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; /*!40101 SET @[email protected]@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @[email protected]@TIME_ZONE */; /*!40103 SET TIME_ZONE=' 00:00' */; /*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @[email protected]@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 [email protected]_TIME_ZONE */; /*!40101 SET [email protected]_SQL_MODE */; /*!40014 SET [email protected]_FOREIGN_KEY_澳门新萄京:迁移方法总结,基于centos的mysql学习补充一。CHECKS */; /*!40014 SET [email protected]_UNIQUE_CHECKS */; /*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; /*!40101 SET [email protected]_COLLATION_CONNECTION */; /*!40111 SET [email protected]_SQL_NOTES */; -- Dump completed on 2014-07-23 22:32:59 View Code

 


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

接纳--all-databases没有要求钦定数据库名称

澳门新萄京 7

实施完结之后会产生all_201肆-7-拾.sql的备份文件,里面会含有了具有数据库的备份新闻

 

唤醒:要是在服务器上进行备份,并且表均为myisam,应思索采纳mysqlhotcopy

因为能够更加快地拓展备份和苏醒

利用mysqlhotcopy,倘诺是Windows操作系统,须求先安装perl脚本组件技巧应用,因为mysqlhotcopy是应用perl来编排的

 

 

提示

(一)如若你未选用--quick要么--opt选项,那么mysqldump将在转储结果在此以前把全部内容载入到内部存款和储蓄器中。那在你转储大数据量的数据库时将会有些难题。该选项默许是展开的,但足以使用--skip-opt来关闭它。 (二)使用--skip-comments能够去掉导出文件中的注释语句 (叁)使用--compact选项能够只输出最要害的言辞,而不出口注释及删除表语句等等 (四)使用--database或-B选项,能够转储多少个数据库,在那么些选项名后的参数都被确感觉数据库名

 


SQLSEKugaVETiggo逻辑备份

自己意识SQLSE凯雷德VE凯雷德的备份概念并从未ORACLE和MYSQL那么多

笔者们常见都会选取下边包车型客车五个SQL语句来备份SQLSE大切诺基VE索罗德数据库,比如备份test库

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

第1个SQL是全体备份test库,要是加上WITH DIFFERENTIAL正是一龙一猪备份

其次个SQL是备份test库的日志

其实从本人眼中的通晓,SQLSE科雷傲VECRUISER正是将数据文件和必备的日志消息放入3个压缩包里面,类似于MYSQL的物理备份,直接复制文件,只是MYSQL并不曾张开打包压缩

 

SQLSE帕杰罗VECRUISER的逻辑备份

逻辑备份正是生成表定义脚本和数据插入脚本,SQLSEBMWX三VE途观200九开首扶助生成数据脚本,在SQLSEXC90VEKoleos200玖从前只支持生成表定义脚本

本人所用的数据库是SQLSERVER2012 SP1

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

澳门新萄京 8

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

澳门新萄京 9

要选择架媾和数量,并且要挑选索引,那样就能够生成表的数据、定义、索引

澳门新萄京 10

澳门新萄京 11

澳门新萄京 12

浮动的本子如下

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冷备份与还原

 

逻辑备份和大意备份

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

mysql:mysqldump、load data infile、select into outfile

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

oracle:(exp/imp)

 

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

sqlserver:backup database语句、backup log语句、停SQLSE奥德赛VE兰德酷路泽服务向来拷贝数据文件

mysql:mysqlhotcopy、innobackupex

oracle:rman、间接将重视文件拷贝到此外的职位、(exp/imp)、(expdp/impdp)

 

 

 

相似点:上边包车型地铁种种数据库的各个备份还原方法,每1种基本上都会有二个独门的工具来做

举个例子sqlserver导入导出向导便是四个独立的exe来做

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

 

 

冷备份和热备份:无论oracle、sqlserver、mysql都有冷备份和热备份的定义

冷备份其实能够容易明了为:截至服务开始展览备份

热备份其实能够差十分的少明了为:不安歇服务开始展览备份(在线)

下边的苏息服务,准确的来说应该是终止数据库的写入

 

为啥mysql的myisam引擎只协理冷备份呢?

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

那么在备份的时候,mysql能够凭仗那几个日志来开展redo和undo,将备份的时候未有提交的事务进行回滚,已经付诸了的拓展重做

不过myisam不行,myisam是未有日记的,为了保险1致性,只可以停机或然锁表进行备份

在书《MYSQL质量调优和架构划设想计》里面谈起了事情的法力

澳门新萄京 13

 

 

我们能够想一想,为啥sqlserver支持从某三个lsn可能时刻进行回复数据库,他也是从日志里面读取日志的lsn号来拓展恢复生机到某多个lsn时刻的数据依旧某1个时刻的数据

只要未有事情日志,那么sqlserver是做不到时点还原的

 

热备份、冷备份

为什么SQLSE途达VEPRADO须求甘休SQLSE昂科威VE帕杰罗服务才干够拷贝物理数据文件,为的都是保险数据1致性

 

自己以前写的一篇文章《达梦七的试用 与SQLSEMuranoVEEnclave的差不离手艺相比较》,达梦数据库援助脱机还原,实际上脱机备份的时候数据库也是须要停止写入数据的

 澳门新萄京 14


大意备份方法

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

因为MYSQL表保存为文件措施,所以能够一贯复制MYSQL数据库的积攒目录以及文件实行备份。

MYSQL的数据库目录地方不料定同样,在Windows平台下,MYSQL5.陆存放数据库的目录平常默感到

C:Documents and SettingsAll UserApplication DataMySQLMYSQL Server 5.6data

抑或其余用户自定义的目录;

在Linux平台下,数据库目录地方一般为/var/lib/mysql/,差异Linux版本下目录会有两样

 

那是一种轻易、快捷、有效的备份格局。要想维持备份1致,备份前供给对相关表推行LOCK TABLES操作,然后对表实施

FLUSH TABLES。那样当复制数据库目录中的文件时,允许任何客户后续查询表。需求FLUSH TABLES语句来保管起头

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

自然,也足以告1段落MYSQL服务再开始展览备份操作

 

这种方法即使简易,但并不是最棒的不二等秘书诀。因为这种措施对INNODB存款和储蓄引擎的表不适用。使用这种办法备份的多少非常还原

到一样版本的服务器中,不一样的本子恐怕不相称。

 

注意:在mysql版本中,第2个数字代表主版本号,主版本号一样的MYSQL数据库文件格式同样

 

二、使用mysqlhotcopy工具神速备份

mysqlhotcopy是1个perl脚本,最初由提姆 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表会出现错误音信

鉴于他复制本地格式的文书,故也不可能移植到此外硬件或操作系统下


 还原

逻辑还原

一、使用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_201肆-7-十.sql文件中的备份导入到数据库中

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

实施语句从前大家必须建好school数据库,假若不存在苏醒进度将会出错。

能够观望表数据都早就导入到数据库了

澳门新萄京 15

 

一经已经报到mysql,那么能够动用source命令导入备份文件

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

澳门新萄京 16

实施source命令前务必接纳use 语句选拔好数据库,不然会冒出E福特ExplorerRO奥迪Q710四陆(3D000):NO DATABASE SELECTED 的荒唐

还可能有一点点要小心的是不得不在cmd界面下试行,不能在mysql工具里面实践source命令,不然会报错

因为cmd是一贯调用mysql.exe来推行命令的

而这几个mysql 编辑工具只是使用mysql connector连接mysql,来管理mysql并不是一向调用mysql.exe,所以进行source会报错

澳门新萄京 17


物理还原

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

假若数据库通过复制数据库文件备份,可以向来复制备份文件到MYSQL数据目录下完结恢复生机。通过这种方法还原时,

总得确认保障备份数据的数据库和待还原的数据库服务器的主版本号同样。

并且这种措施只对MYISAM引擎有效,对于innodb引擎的表不可用

 

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

对此Linux操作系统来讲,复制完文件需求将文件的用户和组改换为mysql运维的用户和组,日常用户是mysql,组也是mysql


三、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分化版本之间必须合作,苏醒之后的数据才方可使用!!


数据库迁移

数据库迁移便是把数量从3个系统活动到另几个种类上。

搬迁的一般原因:

一、需求设置新的数据库服务器

二、mysql版本更新

三、数据库管理体系更换(从SQLSEKugaVE本田CR-V迁移到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为急需迁移的数据库名称

1旦要动迁全体数据库,能够行使--all -databases参数


不等版本的mysql数据库之间的迁移

因为数据库晋级,必要将旧版本mysql数据库中的数据迁移到新本子数据库中。

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

举个例子想保留旧版本中的用户访问调节音讯,则须要备份mysql的mysql库,

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

 

旧版本和新本子的mysql或者选拔分歧的私下认可字符集,举个例子mysql.肆.x中很多选择latin一作为默许字符集,

而mysql伍.x的默许字符集为utf八。要是数据库中有普通话数据,迁移进程中必要对暗中同意字符集进行改造,不然可能非常小概符合规律显示结果

 

新本子对旧版本有早晚包容性。从旧版本的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和SQLSEENCOREVEGL450之间的迁徙(使用SQLSE揽胜VE中华V导入导出向导)

mysql官方提供的工具:MYSQL Migration Toolkit也足以在不一样数据库间进行数量迁移。


表的导入导出

 

MYSQL数据库能够将数据导出成sql文本文件、xml文件、html文件。同样那些导出文件也能够导入到MYSQL数据库中

诚如异构数据库迁移都是应用文本文件的章程来导数据

 

导出 

 

一、用SELECT...INTO OUTFILE导出文本文件

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

该公文被创制在服务器主机上,因而必须有文件写入权限(FILE权限),才具动用此语法

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子句中有多少个子句:TE途胜MINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。

如若钦赐了FIELDS子句,则这四个子句中最少要钦定三个。
(一)TE奥迪Q5MINATED BY用来钦点字段值之间的暗号,比方,“TE福睿斯MINATED BY ','”钦点了逗号作为多少个字段值之间的申明,暗许为“t”制表符。
(二)ENCLOSED BY子句用来钦定包裹文件中字符值的符号,比方,“ENCLOSED BY ' " '”表示文件中字符值放在双引号之间,

若加上关键字OPTIONALLY表示具有的值都坐落双引号之间,则只有CHARubicon和VA汉兰达CHAR等字符数据字段被总结。

(三)ESCAPED BY子句用来内定转义字符,比如,“ESCAPED BY '*'”将“*”钦赐为转义字符,替代“”,如空格将意味着为“*N”。
● LINES子句:在LINES子句中动用TEEscortMINATED BY钦定一行甘休的表明,如“LINES TESportageMINATED BY '?'”表示一行以“?”作为完结标识,默许值为“n”。

 TE途达MINATED 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表的记录导出到文本文件

建表脚本

澳门新萄京 18USE 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将查询出来的三个字段的值保存到C:person0.txt文件,展开文件内容如下

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

能够见到暗中同意景况下,MYSQL使用制表符“t”分隔不一样的字段,字段未有被其它字符括起来

其它在Windows平台下,使用记事本展开该公文,彰显的格式与这里并差异,那是因为Windows系统下回车换行为“rn”

暗中同意换行符为“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 'rn';

在C盘下转移的person一文件内容

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

FIELDS  TEKugaMINATED BY ','表示字段之间用逗号分隔

ENCLOSED BY '''表示每一种字段用双引号括起来

ESCAPED BY '''代表将系统暗许的转移字符替换为单引号

LINES TERMINATED BY 'rn'表示每行以回车换行符结尾,保险每一条记下占一行


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

除外利用SELECT...INTO OUTFILE导出文本文件之外,也足以使用mysqldump

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

 

mysqldump创立1个包罗创立表的CREATE TABLE语句的tablename.sql文件,和1个饱含其数额

的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语句是1致的

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

澳门新萄京 19

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 @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @[email protected]@TIME_ZONE */;
/*!40103 SET TIME_ZONE=' 00:00' */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='' */;
/*!40111 SET @[email protected]@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 [email protected]_TIME_ZONE */;

/*!40101 SET [email protected]_SQL_MODE */;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
/*!40111 SET [email protected]_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

 


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

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

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

一经mysql服务器是单独的机械,用户是在二个client上拓展操作,用户要把数量结果导入到client机器上,能够接纳mysql -e语句

着力格式如下:

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

该命令使用--execute 选项,表示实施该选取前面包车型客车讲话并退出,前面包车型客车话语必须用双引号括起来

dbname为要导出的数据库名称,导出的文本中差别列之间利用制表符分隔,第3行李包裹罗了字段名称

 

行使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

能够看来,person三.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

1经person表中著录内容太长,那样展现将会愈加轻巧阅读

 

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

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

澳门新萄京 20

设若要导出为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>

 


 导入

 

壹、使用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语句从三个文本文件中以极高的进程读入3个表中。
使用那一个命令在此以前,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,新行将替代它有同壹的独占鳌头键值的幸存行。

 (一)假设您钦命ignore,跳过有唯1键的存活行的重新行的输入。

 (2)假诺您不点名别的多少个摘取,当找到重复键时,出现3个谬误,并且文本文件的多余部分被忽视。

 

FIELDS  TE本田UR-VMINATED BY ','表示字段之间用逗号分隔

ENCLOSED BY '''代表每一种字段用双引号括起来

ESCAPED BY '''代表将系统暗中同意的转变字符替换为单引号

LINES STARTING BY ''表示每行数据初叶的字符,可感觉单个或多个,暗中认可不是有别的字符

LINES TERMINATED BY 'rn'表示每行以回车换行符结尾,保险每一条记下占一行

[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命令

澳门新萄京 21

 

利用mysqlimport命令导入文本文件

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

mysqlimport是二个单独的exe,他提供了数不胜数与LOAD DATA INFILE语句同样的功能

多数抉择直接对应LOAD DATA INFILE子句

澳门新萄京 22

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

澳门新萄京 23

导入成功

澳门新萄京 24

 

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语句中有1个mysqlimport工具中未有特色: 

LOAD DATA INFILE 能够按钦点的字段把文件导入到数据库中。

当咱们要把数据的1部分剧情导入的时候,那个特点就很要紧。

比方说,我们要从Access数据库晋级到MySQL数据库的时候,需求投入一些字段(列/字 段/田野先生)到MySQL数据库中,以适应一些额外的必要。 

那年,大家的Access数据库中的数据依然是可用的,不过因为这几个数据的字段(田野先生)与MySQL中的不再相称,由此而不可能再利用mysqlimport工具。

固然,大家照例能够选用LOAD DATA INFILE,上面包车型地铁例证彰显了什么向钦定的字段(田野先生)中导入数据: 

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

 

如你所见,我们能够钦赐须求的字段(田野先生s)。这一个钦命的字段仍旧是以括号括起,由逗号分隔的,假设你遗漏了里面任何多个,MySQL将会提示您^_^ 

 


何以挑选备份工具?

直接复制数据文件是特别直接、快速的备份方法,但缺点是大概不能够落实增量备份。

备份时务必确定保证未有动用这几个表。即便在复制二个表的物理数据文件的还要服务器正在修改他,则复制无效。

备份文件时,最棒关闭服务器,然后重新启航服务器,为了保障数据的一致性,需求在备份文件前进行以下SQL

FLUSH TABLES WITH READ LOCK;

也正是把内部存款和储蓄器中的多少刷新到磁盘中,同期锁定数据表,以确认保障复制过程中不会有新的数据写入。

这种措施备份出来的数据苏醒很简单,直接复制回原本的数据库目录下就可以

 

mysqlhotcopy是1个PERubiconL程序,他利用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途观 十四陆(3D000):NO DATABASE SELECTED 的错误音讯

而上边包车型地铁话语,数据库删除之后,能够健康还原备份时的情状

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

该语句不唯有备份了拥有数据库下的表结构,而且包罗创设数据库的说话


总结

那一节介绍了MYSQL中的备份和苏醒,还大概有数据库的迁徙,异构数据库之间的迁徙基本上都用导出文件文件的措施

壹旦是小数据量还不错以,尽管数据量比一点都不小,导出文本文件也会极大,不是太可取

指望那篇小说对我们有帮忙

 

如有不对的地方,应接大家拍砖o(∩_∩)o 

1. 使用 SQLyog 迁移

多少库A的user表须求导入到数据库B的account表
user表字段:uid,username,email,password,regdate,salt
account表字段:id,name,email,password,type,salt
导入的字段唯有username,email,password,salt,并且regdate须求符合某些条件
上边分两种处境来写sql,重要差距insert into和replace into

自家想去学习MYSQL,哪个人能够推荐多少个上学的艺术?

MYSQL的求学不是一天二日就能够会的,你还得勤加看书学习,然后再找人事教育你有个别知识,你最佳去书店先买一些书籍.
找到有此知识的人上课你相关试行知识,这里有实在真才识学的人,都是一对早就参与工作好些年又助长施行经验的人,他们便是在地点赚些外块。作者看您去这里应该能够学习到真手艺。
在依旧你如果时间丰硕就去哪边补课班学习呢,可是这里常常都很贵而且时间也正如原则性,不太适合上班族。
在不然你就本人去买点书,使劲看,在上网找些录制来学都能够,可是,小编总以为那东西如果未有一人带着是极度的。  

具体方法能够加入:

情况

初识mysql,笔者应当学学对于它的什内容?

MySQL的学习能源:官方手册 方今MySQL提供的合法手册中,英文版本蕴含以下类别: MySQL 五.五 参考手册 MySQL 5.四 参谋手册 MySQL 伍.一 仿照效法手册 MySQL 五.0 参谋手册 MySQL 三.275%.0/四.壹参阅手册 中文版本为伍.一在线参谋手册,UPAJEROL参照他事他说加以调查扩张阅读 前言 那是关于五.壹版至伍.一.二-阿尔法版MySQL数据库系统的参谋手册。该手册不适用于旧版本MySQL软件,那是因为在MySQL 伍.一和在此之前的版本存在很多功效性差距和此外异样。如若正在选拔MySQL软件的较旧版本,请参阅MySQL 5.0参照他事他说加以考察手册,该手册涵盖了MySQL 伍.0,或参阅MySQL 4.一参谋手册,该手册涵盖了MySQL 4.一以及MySQL的享有中期版本。在手册的文书中,通过引用宣布版本号(五.一.x),表明了MySQL 伍.1的二级版本。 那是MySQL参考手册的翻译版本,关于MySQL参谋手册,请访问dev.mysql.com。 原始仿效手册为英文版,与英文版参照他事他说加以考察手册比较,本翻译版恐怕不是时尚的。

初学MySQL哪些须要你领会
一、连接MYSQL
格式: mysql -h主机地址 -u用户名 -p用户密码 一、例一:连接到本机上的MYSQL。 首先在开垦DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车的后边提示您输密码,如若刚安装好MYSQL,超级用户root是不曾密码的,故直接回车就能够进入到MYSQL中了,MYSQL的晋升符是:mysql> 二、例二:连接到长途主机上的MYSQL。假诺远程主机的IP为:1拾.1十.1拾.110,用户名称叫root,密码为abcd1贰叁。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123(注:u与root能够毫无加空格,其余也同等) 三、退出MYSQL命令: exit (回车) 注意:想要成功总是到长途主机,供给在远距离主机张开MySQL远程访问权限 方法如下: 在长途主机中以管理人伙身份进入 输入如下命令 mysql>GRANT ALL PKugaIVILEGES ON *.* TO 'agui'@%'IDENTIFIED BY '1二3' WITH GRANT OPTION; FLUSH PLacrosseIVILEGES; //赋予任何主机访问数据的权力 mysql>FLUSH P奥德赛IVILEGES //修改生效 agui为大家应用的用户名 密码为1二三即:在长距离主机上作好设置,我们就能够通过mysql -h110.1十.1十.1十 -uagui -p1贰三老是进远程主机
2、修改密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码 1、例1:给root加个密码ab1二。首先在DOS下进入目录mysqlbin,然后键入以下命令 mysqladmin -uroot -password ab1贰注:因为开端时root未有密码,所以-p旧密码1项就足以轻易了。 二、例二:再将root的密码改为djg345。 mysqladmin -uroot -pab1二 password djg3四5
叁、扩展新用户
(注意:和上边差别,上边包车型地铁因......余下全文>>  

笔者的MYSQL学习心得(拾4) 小编的MYSQL学习心得(1) 笔者的MYSQL学习心得(二) 作者的MYSQL学习心得(...

可取:该搬迁方法非常的粗略,灵活,迁移时,能够开始展览字段的改造,举例在sql server中原本是datetime,然后迁移到mysql时你能够配备成timestamp;

导入的多寡在B库的表中完全不存在

        成功率异常高;

直接insert into就好,使用replace into效果同样

缺陷:迁移比相当的慢!那是该格局最大的后天不足,借使表的数据量达到几八万行,以至几百万行,你会发觉迁移起来着实非常的慢。鲜明比任何迁移方法慢诸多。

INSERT INTO `B`.`account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`users`
WHERE regdate>1418313600

二. 施用 powerdesigner 和 sql server 的脚本导出功用 来迁移

导入的数码部分存在

第三步:该措施首先利用 powerdesigner,对sql server数据库,举办逆向工程,获得E-纳瓦拉图,然后生成MySQL的建表语句。完结数据库结构的迁移;

数量部分存在为了差别需求在多少个表增多唯一索引,那一个唯一索引(UNIQUE)必须是导入的字段里面包车型客车值
自家在三个表中分别为username和name字段增加唯一索引
直白沟通

           当然表结构的动员搬迁,不选拔powerdesigner同样也是能够的。比方自身将表结构导出成语句,然后手动举行改动,然后在MySQL中运营,也是同等的;

replace into在操作的时候纵然两表数据再一次(必须定义UNIQUE),会先删掉那壹行(注意是1整行),然后再举行insert into

其次部:然后利用 sql server的工具 SSMS,将sql server数据库中的表的数量,导出成insert语句,各种表对应导出贰个文本,然后对文件实行部分拍卖,

乃至的后果就是,account表中的type字段假使原本有值,会一直删掉,不分厚薄复插入,即形成暗中同意值了

           然后导入到MySQL数据库中。

REPLACE INTO `B`.`account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`users`
WHERE regdate>1418313600

现实的对 sql server 导出的sql文件的处理措施,参见:

忽略重复

三. 选取Oracle MySQL Server 官方的 workbeach 工具进行搬迁

用IGNORE关键字,借使境遇重复,不会操作当前行

mysql官方有两篇 sql server 迁移到 mysql的指引手册,可以参照:

INSERT IGNORE INTO `B`.`account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`users`
WHERE regdate>1418313600


1对更新

地点的一而再中能够下载到pdf文件,安装文件的验证,使用 workbeach 工具就能够拓展搬迁。因为 workbeach 有30天的使用期,所以完全不要求担忧;

举个例子果只想翻新password和salt字段,能够用ON DUPLICATE KEY UPDATE

在workbench 连接sql server时,用户需求有 view any database 的权位。不然workbench没办法访问sql server的表结构的元数据,从而不或者张开搬迁。

INSERT INTO `B`.`u_account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`bbs_ucenter_members`
WHERE regdate>1418313600 ON DUPLICATE KEY UPDATE PASSWORD=VALUES(PASSWORD),salt=VALUES(salt)

再有使用 Navicat 来拓展搬迁的情势,方法和 SQLyog 是类似的。

总结

四. 三种办法比较

replace into相比较暴力,英特网也是有说慎重使用的,最佳用insert into代替

格局二头适合数据量小的迁移方法,借使数据量大,迁移时间短,基本是不吻合的;

疑问

艺术2是比较好的点子,缺点就是sql server导出的insert脚本中 datetime字段和decimal必要和煦写代码举行改换,稍微有一点点麻烦;

如上的操作是多少个数据库在平等台服务器上的,直接一条sql就足以解决
如果要导的多少个库在不一样的五个服务器上要怎么办呀?
脚下权且的主意:
将A库中的user表导入到B库所在的另一台服务器上,然后写一条sql化解
要么查询出钦点数量,导出sql,在sql少将insert into替换为insert ignore into(有局限性)

其三种方法应该是顶尖的选料,比较简单,速度也快,又无需本人进行字段的拍卖。

上述所述就是本文的全体内容了,希望大家能够喜欢。

由此对于数据量相当的大的场所,应该选拔形式3依旧方法2。

你只怕感兴趣的篇章:

  • SQL查询出表、存款和储蓄进程、触发器的创办时间和尾声修改时间示例
  • MySQL中期维修改表结构时须求小心的局地地点
  • MySql表、字段、库的字符集修改及查看方法
  • SQL Server存款和储蓄进度中使用表值作为输入参数示例
  • SQL Server查询数据库中表使用空间新闻达成脚本
  • SQL Server根据分区表名查找所在的文书及文件组完结脚本
  • 详解MySql基本查询、连接查询、子查询、正则表明查询
  • sql server 3000中明令禁止创立表(权限设置情势)
  • sql server创造有时表的两种写法和删除不经常表
  • sql server建库、建表、建约束手艺
  • 详解Mysql多表联合查询效能深入分析及优化
  • 数码库表的始建、管理和数码操作(实验1)

5. 搬迁必要注意的部分标题

sql server 在向 mysql 迁移时,须求专注的局地难点,在连接 的文书档案中都有表达。上边是一些切实可行的注意事项:

一)唯一索引的两样,sql server的头一无二索引的字段只好同意存在1个null值,而mysql,一贯oracle中唯一索引对应的字段都同意存在多个null值;

二)ifnull 与 isnull ,sql server使用的是 ifnull,而mysql 中要运用 isnull:

  <update id="updateModelAccuracyById" parameterClass="java.util.Map">
      update model_model 
      set accuracy_num=ifnull(accuracy_num,0)   1, accuracy_total=ifnull(accuracy_total,0)   #accuracyTotal:DECIMAL# 
      where id=#id:BININT# and status=1
  </update>

3)所有的分页sql都亟待重写:

SQL server的分页(使用的是 row_number() over(......)):

  <select id="getModelChoiseListByUserId" parameterClass="java.util.Map" resultClass="net.xxx.xxx.dataobject.model.ModelChoiseVo">
   select * from (select row_number() over(order by c.choise_time desc) as rowid, 
        c.id as id,m.gid as gid,m.member_id as memberId,mb.g_Member_Nickname as memberName,
        mb.g_Member_Mobile as memberMobile,c.user_id as userId,
        ... ...
        m.order_num as orderNum,m.model_satisfaction as modelSatisfaction,m.height as height,
        m.professional_type professionalType
    from model_model m 
    inner join model_choise c on m.id=c.model_id
    inner join Members mb on mb.g_MemberID=m.member_id
    where  m.status=1
    <dynamic >
        <isNotNull prepend="and" property="userId">
            c.user_id = #userId:BIGINT#
        </isNotNull>
        <isNotNull prepend="and" property="status">
            c.status = #status:INTEGER#
        </isNotNull>
    </dynamic>
    ) tt where rowid &gt;= #minRow:INTEGER# and rowid &lt;= #maxRow:INTEGER#
  </select>

用mysql重写:

  <select id="getModelChoiseListByUserId" parameterClass="java.util.Map" resultClass="net.xxx.xxx.dataobject.model.ModelChoiseVo">
   select 
        c.id as id,m.gid as gid,m.member_id as memberId,mb.g_Member_Nickname as memberName,
        mb.g_Member_Mobile as memberMobile,c.user_id as userId,
        m.id as modelId,c.status as status,
        c.pay_amount as payAmount,c.accuracy as accuracy,
        ... ...
        m.order_num as orderNum,m.model_satisfaction as modelSatisfaction,m.height as height,
        m.professional_type professionalType
    from model_model m 
    inner join model_choise c on m.id=c.model_id
    inner join Members mb on mb.g_MemberID=m.member_id
    where  m.status=1
    <dynamic>
        <isNotNull prepend="and" property="userId">
            c.user_id = #userId:BIGINT#
        </isNotNull>
        <isNotNull prepend="and" property="status">
            c.status = #status:INTEGER#
        </isNotNull>
    </dynamic>
    order by c.choise_time desc
    limit #minRow:INTEGER#, #maxRow:INTEGER#
  </select>

4)存款和储蓄进程的迁移是最麻烦的:

仓库储存进度的语法存在一点都不小的不如。

的文书档案中有一点认证。

上面是一些mysql存款和储蓄进度的参阅小说:

 

本文由澳门新萄京发布于数据库,转载请注明出处:澳门新萄京:迁移方法总结,基于centos的mysql学习

上一篇:澳门新萄京:Mysql下在某一列后即表的某一位置添 下一篇:没有了
猜你喜欢
热门排行
精彩图文