--default-character-set
当导出的数据有emoji表情时,就需要指定默认字符集为utf8mb4,否则导出导入之后,就全成问号了
--hex-blob
BINARY, VARBINARY, BLOB类型导出时会以十六进制表示,而不是以二进制,二进制导出的文件无法编辑
--complete-insert
默认导出的语法为insert into `t` values (xx, xx, xx, ...),而当表结构有变化时,导出再导入后就会混乱,哪怕只是字段先后顺序不一致。使用该参数,导出的sql会变成insert into `t` (f1, f2, f3, ...) vlaues (xx, xx, xx, ...)
--where
导出时相当于加一个where条件
--no-create-info
导出时没有drop table if exists `t`和create table `t` (),也就是只有数据,没有表的drop和create
--no-data
不导出数据,只有表的drop和create语法,正好跟--no-create-info相反
--replace
不使用insert into `t` values 语法,而使用replace into `t` values 语法,这样当导入时,表里如果已经有数据,也是直接覆盖(先delete再insert),不会出现插入失败的错误
--insert-ignore
使用insert ignore into语法,这样当导入时,表里如果已经有数据了,就会跳过主键一样的数据,也不会出错。这正好跟--replace行为相左
--skip-extended-insert
默认是使用一个insert into语句插入所有的数据,使用该参数后,一行一条insert语句,当然插入效率会比较低
-r --result-file
结果输出到文件,跟结果重定向到文件效果一样
最后,举个栗子:
./bin/mysqldump db table --hex-blob --complete-insert --no-create-info --default-character-set=utf8mb4 --where='id<=10013' > dump.sql