金沙澳门官网网址-澳门金沙官网登录

金沙澳门官网网址拥有大量的原创内容,澳门金沙官网登录提供最权威、快速、全面、专业的报道,所以金沙澳门官网网址注册送彩金就相当于直接送现金了,享受最尊贵的贵宾服务。

数据库备份程序,备份内容包含创建表或装载表

2019-11-20 05:00栏目:金沙澳门官网
TAG:

一.概述

    mysqldump客户端工具是用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表或装载表的sql语句。mysqldump目前是mysql中最常用的备份工具。
  三种方式来调用mysqldump,命令如下:
澳门金沙官网登录 1
  上图第一种是备份单个数据库或者库中部分数据表(从备份方式上,比sqlserver要灵活一些,虽然sql server有文件组备份)。第二种是备份指定的一个或者多个数据库。第三种是备份所有数据库。
  1.连接导出,下面将test数据库导出为test.txt文件,导出位置在data目录下

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

澳门金沙官网登录 2澳门金沙官网登录 3

  上图显示: 导出到test.txt文件里, 数据有几部份sql语句,包括:(1)有判断表存在删除,(2)导出表结构和表数据,(3)导前加table write锁,导完释放。通过下面帮助命令可以看到默认设置。

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

澳门金沙官网登录 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

澳门金沙官网登录 5

    上图显示,使用more 查看a.txt,内容只有表结构。
  3. 使用 --compact选项使得结果简洁,不包括默认选项中的各种注释,下面还是演示a表:

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

澳门金沙官网登录 6

  4. 使用-c --complete-insert 选项,使insert语句包括字段名称

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

澳门金沙官网登录 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%';

澳门金沙官网登录 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 目录下,如下图:
澳门金沙官网登录 9澳门金沙官网登录 10

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

澳门金沙官网登录 11

    使用more 查看文件,b.sql中包含了表架构, b.txt包含数据。
澳门金沙官网登录 12

澳门金沙官网登录 13

   6.  字符集选项

    --default-character-set=name 选项可以设置导出的客户端字符集。这个选项很重要,如果客户端字符集和数据库字符集不一致,有可能成为乱码,使得备份文件无法恢复。

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

    澳门金沙官网登录 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脚本,其中包含从头重新创建数据...

登入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' ;
用这两条命令还是有注意事项:

分隔符参数

fields关键字指定了文件记段的分割格式,如果用到这个关键字,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报表到指定的目录。

导入导出一定是在设定的目录文件,否则会报错:ERROR 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
导出几个数据库。参数后面所有名字参量都被看作数据库名。导出文件中会有'USE db_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 MASTER命令输出到数据文件;设置为2时,会在change前加上注释。
--master-data[=#]
该选项将当前服务器的binlog的位置和文件名追加到输出文件中(show master status)。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE MASTER命令前添加注释信息。
-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

写得不错的:

django migrate 冲突解决

冲突起因, makemigrations 记录sql的变化, migrate执行,多人协作或一不留神,常常造成冲突。

  • 解决makemigrations对应冲突的脚本
  • 增量修改表结构

版权声明:本文由金沙澳门官网网址发布于金沙澳门官网,转载请注明出处:数据库备份程序,备份内容包含创建表或装载表