一、mysqldump
mysqldump命令位于mysql安装目录的bin目录下
主要作用:将一个或者数据库(一张或多张表)导出导一个文件中。
简单示例:
业务:将多张业务数据表导出到一个文本文件中
mysqldump支持将多张 业务表导出导一个文本中,前提是这多个业务表有相同的字段。不支持表的关联导出,比如 A表关联B表 我导出A表5个字段B表5个字段。这样的不行。只能导单表
C:\Users\T440P\Desktop\20200911\sjjy\mysql\bin\mysqldump.exe -uroot -proot --port 3307 -ct --lock-all-tables
--compact --replace --default-character-set=utf8 --databases sjjy --tables test1 test2 -w "id between 1 and 1000" > E:/123/sql.sql
-u 用户名
-p 密码
-h 连接地址
--port 端口号
--complete-insert 简写:-c 使用完整的insert语句(包含列名称)
--no-create-info 简写:-t 只导出数据,而不添加CREATE TABLE 语句。
--lock-all-tables 简写:-x 提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction 和--lock-tables 选项。
--compact 去掉注释和头尾等结构
--replace 使用REPLACE INTO 取代INSERT INTO 不写是insert into
--default-character-set=utf8 设置导出的编码格式
--databases 后跟数据库名称 此选项可省略 直接上数据库名称即可
--tables 后跟表名称(多个表空格隔开即可) 此选项可省略 直接写表名称即可
-w 查询条件 支持子查询
扩展一:上述mysqldump命令可以通过java 的Runtime.exec(String command)去调用执行。
https://blog.csdn.net/qq_35044419/article/details/108575656
扩展二:replace into 与 insert into的区别:
如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。否则,直接插入新数据。
注意:因为要根据主键或者是唯一索引判断是否有重复数据,所以操作的表必须要有主键或者是唯一索引。否则的话,replace into 会直接插入数据。
扩展三:除了replace into 了解下这个东东
INSERT INTO table_name(id,name) VALUES(3, 'SuperMan') ON DUPLICATE KEY UPDATE name='SuperMan';
根据主键或者联合索引判断,没有则新增,有会自动监测update后的字段是否变化,变化则更新,没变化其实也执行了(受影响行0)
https://blog.csdn.net/qq_35044419/article/details/81974107
下面介绍下mysqldump的参数:(https://www.cnblogs.com/qq78292959/p/3637135.html)
--all-databases , -A
导出全部数据库。
mysqldump -uroot -p --all-databases
--all-tablespaces , -Y
导出全部表空间。
mysqldump -uroot -p --all-databases --all-tablespaces
--no-tablespaces , -y
不导出任何表空间信息。
mysqldump -uroot -p --all-databases --no-tablespaces
--add-drop-database
每个数据库创建之前添加drop数据库语句。
mysqldump -uroot -p --all-databases --add-drop-database
--add-drop-table
每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)
mysqldump -uroot -p --all-databases (默认添加drop语句)
mysqldump -uroot -p --all-databases –skip-add-drop-table (取消drop语句)
--add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用--skip-add-locks取消选项)
mysqldump -uroot -p --all-databases (默认添加LOCK语句)
mysqldump -uroot -p --all-databases –skip-add-locks (取消LOCK语句)
--allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
mysqldump -uroot