一.概述

    mysqldump顾客端工具是用来备份数据库或在分化数据库之间进行数量迁移。备份内容蕴涵创设表或装载表的sql语句。mysqldump前段时间是mysql中最常用的备份工具。
  二种艺术来调用mysqldump,命令如下:
home88一必发 1
  上海教室第意气风发种是备份单个数据库或然库中部分数据表(从备份方式上,比sqlserver要灵活一些,即便sql
server有文件组备份卡塔 尔(阿拉伯语:قطر‎。第三种是备份钦定的贰个要么多少个数据库。第两种是备份全数数据库。
  1.连接导出,下边将test数据库导出为test.txt文件,导出地方在data目录下

[root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p test > test.txt

home88一必发 2home88一必发 3

  上海体育场地展现: 导出到test.txt文件里,
数占领几部份sql语句,满含:(1)有咬定表存在删除,(2)导出表结构和表数据,(3)导前加table
write锁,导完释放。通过下边协助命令可以看出私下认可设置。

 [root@hsr data]# /usr/local/mysql/bin/mysqldump --help

home88一必发 4  2.
出口内容采用

-n, –no-create-db

不包含数据库的创建语句

-t, –no-create-info

不包含数据表的创建语句

-d,–no-data

不包含数据

    上面演示导出test库的a表,不包罗数据:

[root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p -d  test a > a.txt

home88一必发 5

    上海体育场面彰显,使用more 查看a.txt,内容唯有表结构。
  3. 应用
–compact选项使得结果简洁,不包蕴暗许选项中的各个注释,上面如故演示a表:

[root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p --compact  test a > a.txt

home88一必发 6

  4. 行使-c –complete-insert 选项,使insert语句包蕴字段名称

[root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p -c --complete-insert  test b > b.txt

home88一必发 7

  5. 使用-T选项将点名数量表中的数据备份为单纯的多少文本和建表sql,
多少个公文。

     [root@hsr data]# midir bak
        [root@hsr data]# /usr/local/mysql/bin/mysqldump -uroot -p   test b -T ./bak
        Enter password: 
        mysqldump: Got error: 1290: The MySQL server is running with the --secure-file-priv option so it cannot execute 
                      this statement when executing 'SELECT INTO OUTFILE'

 --上面的语句报错,查找错误信息中的字段设置
SHOW VARIABLES LIKE '%secure%';

home88一必发 8

    secure-file-priv参数是用来界定LOAD DATA, SELECT … OUTFILE, and
LOAD_FILE()传到哪个钦定目录的。

                   (1) 当secure_file_priv的值为null ,表示节制mysqld
不允许导入|导出。

                   (2) 当secure_file_priv的值为/tmp/ ,表示限定mysqld
的导入|导出只可以发出在/tmp/目录下。

                   (3
)当secure_file_priv的值未有具体值时,表示不对mysqld
的导入|导出做节制。

    上边来安装my.cnf文件,加上导入地点,位置在/tmp 目录下,如下图:
home88一必发 9home88一必发 10

-- 再次导出,导出路径在/tmp下
[root@hsr data]#  /usr/local/mysql/bin/mysqldump -uroot -p   test b -T /tmp

home88一必发 11

    使用more 查看文件,b.sql中含有了表架构, b.txt富含数据。
home88一必发 12

home88一必发 13

   6.  字符集选项

    –default-character-set=name
选项能够设置导出的客户端字符集。这一个选项很入眼,要是客商端字符集和数据库字符集不意气风发致,有不小可能率成为乱码,使得备份文件不能恢复。

[root@hsr data]#  /usr/local/mysql/bin/mysqldump -uroot -p  --compact --default-character-set=utf8 test >test.txt

    home88一必发 14

  7. 其余常用选项

    (1) -F –flush-logs(备份前刷新日志) 
备份前将闭馆旧日志,生成新日志。复苏的时候平素从新日志开首进行重做,方便重作冯妇进度。

    (2) -l –lock-tables(给具备表加读锁)
使得数据不能够被更新,从而使备份的多寡保持生机勃勃致性(能够产生多量长日子梗塞卡塔尔国。

mysql导入导出命令拆解深入分析,mysql导入导出深入解析

mysqldump是mysql用于转存款和储蓄数据库的实用程序。它重要爆发一个SQL脚本,此中蕴藏从头重新创制数据库所须要的指令CREATE
TABLE INSERT等。上面就让大家联合念书吧!

生机勃勃、mysqldump:数据库备份程序
 有3种方法来调用mysqldump:

mysqldump [options] db_name [tables]
mysqldump [options] ---database DB1 [DB2 DB3...]
mysqldump [options] --all--database

借使未有一点点名其余表或行使了—database或–all–database选项,则转储整个数据库。

1、备份三个数目库.

mysqldump -uroot -p123456 mysql > mysql_backup.sql

那边备份了database mysql的组织和数码,生成的sql文件不会有创造database
mysql的语句。

2、能够用一个命令备份mysql,test多个数据库:

mysqldump -u root -p123456 --database mysql test > my_databases.sql

变迁的sql文件有创设database mysql和test的话语

3、备份全部数据库:

mysqldump -u root -p123456 --all-databases > all_databases.sql

4、导出mysql这几个数据库的协会

 mysqldump -u root -p123456 -d --add-drop-table mysql > mysql_define.sql

5、导出叁个数量具备数据并用gz压缩

mysqldump -u root -p123456 mysql | gzip > mysql.sql.gz

能够那样将转储文件读回到服务器:

mysql db_name < backup-file.sql
mysql -e "source /path-to--backup/backup-file.sql" db_name

抑或从gz文件中回复

gunzip -f < mysql.sql.gz | mysql -u root -p123456 test

 

二、SELECT…INTO OUTFILE SELECT…INTO OUTFILE
‘file_name’情势的SELECT能够把被筛选的行写入几个文书中,该文件被创设到服务器主机上。

SELECT…INTO OUTFILE是LOAD DATA
INFILE的补语;用于语句的exort_options部分的语法包涵一些FIELDS和LINES子句,那个子句与LOAD
DATA INFILE语句同期选取。

在底下的事例中,生成三个文书,各值用逗号隔离。这种格式能够被不菲主次选取

SELECT * INTO OUTFILE '/tmp/result.txt' 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY 'n'
FROM mysql.user;

将mysql数据库的user表的数码导出到/tmp/result.txt

SELECT…INTO OUTFILE只可以导出数据,不能够导出结构,日常和load
data联合使用。

 

三、LOAD DATA INFILE
LOAD DATA
INFILE语句用于高速地从二个文件文件中读取行,并装入三个表中。文件名称必需为叁个文字字符串。

由character_set_database系统变量提示的字符集被用于解释文件中的音讯。

LOAD DATA LOCAL INFILE '/tmp/result.txt' INTO TABLE test.user
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY 'n'

把/tmp/result.txt的数额导入到test数据库的user表。

四、导入导出格式

FIELDS TERMINATED BY ','   字段间分割符采用,号
OPTIONALLY ENCLOSED BY '"'     用"号将字段包围,对数值型无效
LINES TERMINATED BY 'n'       记录间隔符采用n换行符

如上便是关于mysql导入导出命令的全体介绍,希望对我们熟稔精通mysql命令有所扶植

mysqldump是mysql用于转存款和储蓄数据库的实用程序。它首要爆发四个SQL脚本,此中包含从头重新创制数据…

django migrate 冲突消除

冲突起因, makemigrations 记录sql的变动,
migrate推行,多少人搭档或一不留意,日常招致冲突。

  • 消除makemigrations对应冲突的本子
  • 增量改正表结构
mysql 常用命令

mysql 导入导出的指令。

使用mysqldump命令
mysqldump
是命令行工具,首要用于mysql备份和苏醒数据。那些命令使用起来方便,直接在极限试行。

Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…]
OR mysqldump [OPTIONS] –all-databases [OPTIONS]

mysqldump 的首要参数:

-h, –host=ip 主机地址
-u, –user=name 登陆客商名
-P, –port=#home88一必发 , Mysql连接端口
-p, –password[=name]
Mysql密码。倘诺不给定值,直接回车,会唤醒输入密码
-d, –no-data 不分包行音信,只导出表结构

那么些命令都毫无特意去记,推行 mysqldump –help , 就足以查询利用帮忙。

导出整个表(包蕴数据)
mysqldump -u 用户名 -p [密码] 数据库名 > 导出的文书名
导出表

满含数据

mysqldump -u 客商名 -p 数据库名 表名 > 导出的文本名

只导出表结构

mysqldump -u 客商名 -d -p 数据库名 表名 > 导出的文本名

导入到远程服务器
采纳管道命令,还足以将导出的多少直接导入到远程的服务器上,前提是服务器能够互相拜候。

mysqldump -u 客商名 -p 数据库名 | mysql -h 远程服务器HOST 远程数据库名
SQL文件压缩备份&还原
mysqldump -u 客商名 -d -p 数据库名 | gzip > 文件名.sql.gz

gunzip < 文件名.sql.gz | mysql -u 用户名 -p 数据库
示例SQL

create database test;
use test;

create table tb1(
f1 int auto_increment,
f2 varchar(50),
primary key(f1)
)ENGINE= INNODB default charset = utf8;

insert into tb1 values(null, ‘a’);
insert into tb1 values(null, ‘b’);
insert into tb1 values(null, ‘c’);
insert into tb1 values(null, ‘d’);

create table tb2(
t1 int auto_increment,
t2 varchar(50),
primary key(t1)
)ENGINE= INNODB default charset = utf8;

insert into tb2 values(null, ‘a’);
insert into tb2 values(null, ‘b’);
insert into tb2 values(null, ‘c’);
insert into tb2 values(null, ‘d’);

select * from tb1;
select * from tb2;
mysqldump -uhomestead -p testdb > test_ddl.sql
mysqldump -uhomestead -p test tb1 > ~/Code/tmp/db1_ddl.sql
mysqldump -uhomestead -p test -d tb1 > ~/Code/tmp/db1_ddl.sql

mysqldump -uhomestead -d -p test | gzip > backup-file.sql.gz
gunzip < backup-file.sql.gz | mysql -uhomestead -p test
使用source 命令
能够在mysql调整台里,加载实行SQL文件。

登入Mysql

mysql -u root -p

mysql> set names utf8; (制止乱码,先安装字符集)
mysql> use test;
mysql> source ~/Code/tmp/db1_ddl.sql
使用into outfile 和 load data infile命令
突发性,大家需求基于查询条件导出SQL,能够使用mysql语句:into outfile 和
load data infile。

同source命令, 都必要首先登场陆mysql。

导出

select * from tb1 into outfile ‘/var/lib/mysql-files/outfile1’ fields
terminated by ‘|’ enclosed by ‘”‘ lines terminated by ‘rn’ ;
导入

load data infile “/var/lib/mysql-files/outfile1” replace into table tb1
fields terminated by ‘|’ enclosed by ‘”‘ lines terminated by ‘rn’
;
用这两条命令仍有注意事项:

相隔符参数

田野先生s关键字钦赐了文本记段的撤销合并格式,要是用到那些主要字,MySQL剖判器希望阅览至稀少上面包车型大巴二个取舍:

terminated by 分隔符:意思是以什么字符作为分隔符
enclosed by 字段括起字符
escaped by 转义字符
terminated by 描述字段的分隔符,默许情形下是tab字符( 卡塔 尔(阿拉伯语:قطر‎
enclosed by 描述的是字段的括起字符。
escaped by 描述的转义字符。暗中认可的是反斜杠(backslash: 卡塔尔
字符集设置

load data infile ‘/var/lib/mysql-files/outfile1’ replace into table tb1
character set utf8 fields terminated by ‘|’ enclosed by ‘”‘ lines
terminated by ‘rn’ ;
目录范围

mysqld 的secure_file_priv配置 ,用来界定LOAD_FILE(卡塔尔国和LOAD
DATA和SELECT … ,INTO OUTFILE报表到钦命的目录。

导入导出一定是在设定的目录文件,不然会报错:E帕杰罗RO路虎极光 1290 (HY000):The MySQL
server is running with the –secure-file-priv option so it cannot
execute this statement

查阅配置

SELECT @@secure_file_priv;

常用参数
-A, –all-databases
导出全部数据库
–add-drop-database
在创立数据库以前先DROP数据库
–add-drop-table
在创制表早前先drop表,暗中认可true
–add-locks
在insert语句前加锁,暗中认可true
–compact
导出越来越少的输出音信(用于调节和测量试验)。去掉注释和头尾等协会
-c, –complete-insert
选用完整的insert语句(包括列名称)。
-B, –databases
导出多少个数据库。参数后边所盛名字参量都被当做数据库名。导出文件中会有’USEdb_name;’
–default-character-set=name
设置默许字符集
-e, –extended-insert
行使全数五个VALUES列的INSERT语法。那样使导出文件越来越小,并加紧导入时的进程,暗中认可true
**–ignore-table=name **
忽略钦点的表不导出
–insert-ignore
在插入行时使用insert ignore
-l, –lock-tables
开始导出前,锁定全部表
–dump-slave
将主库的binlog地方和文书名增到导出数据的公文中,该参数在在从服务器上实行,约等于实行show
slave status.当设置为1时,将会以CHANGE
MASTEENVISION命令输出到数据文件;设置为2时,会在change前加上注释。
–master-data[=#]
该选拔将如今服务器的binlog的职位和文件名增至输出文件中(show master
status)。若是为1,将会输出CHANGE MASTE昂科拉 命令;假使为2,输出的CHANGE
MASTE陆风X8命令前加多注释音讯。
-n, –no-create-db
只导出多少,不加多create database语句,暗中认可false
-t, –no-create-info
只导出多少,不加多create table语句,暗中同意false
-d, –no-data
不导出别样数据,只导出多少库表结构
-q, –quick
不缓冲查询,直接导出到专门的学问输出。暗中认可true
**–replace **
插入数据时用replace
–set-gtid-purged[=name]
是否增添SET@@GLOBAL.GTID_PURGED,默认auto
–single-transaction
利用黄金年代致性的快速照相来导出多少,不锁表,暗中认可false
–tables
蒙面–databases (-B)参数,内定须要导出的表名
-w, –where=name
遵守规范导出,只好导出单个表
-u -h -P -p
用户名,主机名,端口,密码

常用方法
1、导出全数库
mysqldump -uroot -p123 –single-transaction –all-databases
>all.sql
该命令会导出满含系统数据库在内的持有数据库
2、导出单个库
mysqldump -uroot -p123 –single-transaction test > test.sql
3、导出多个数据库
mysqldump -uroot -p123 –single-transaction –databases db1 db2>
db.sql
导出文件中会有’USE db1;USE db2′
4、导出单表
mysqldump -uroot -p123 –single-transaction test table_1 >
table_1.sql
5、导出多表
mysqldump -uroot -p123 –single-transaction test –tables table_1
table_2> table.sql
6、只导表结构
mysqldump -uroot -p123 –single-transaction test -d >
test_structure.sql
7、只导出多少
mysqldump -uroot -p123 –no-create-info –single-transaction
–skip-add-locks –compact -c –set-gtid-purged=OFF test t2 >t2.sql
8、遵照where条件导出
mysqldump -uroot -p123 –single-transaction test table_1 -w
“id<1000000” > table_1.sql

写得科学的:

相关文章