接到个需求,导出一个数据库所有表格结构,不要数据,但是 sys_ 开头的表要数据
mysqldump是不支持通配符导出的,经过一番研究还是实现了
1.mysqldump只导出全量表结构
mysqldump -uroot -p'密码' -d 库名 > /docker-entrypoint-initdb.d/库名.sql
2.mysqldump导出部分表
#导出所有的sys_开头的表名到文件tbs
mysql -uroot -p'密码' -N information_schema -e "select table_name from tables where TABLE_schema='库名' and table_name like 'sys_%' " > /docker-entrypoint-initdb.d/tbs.txt
#读取文件表名并通过mysqldump导出
cat /docker-entrypoint-initdb.d/tbs.txt|xargs mysqldump -uroot -p'密码' 库名 > /docker-entrypoint-initdb.d/库名_sys.sql
如果导出时想排除某些表可用如下语句
#导出除了_backup结尾和tmp_开头以外的所有表名到文件tbs
mysql -uroot -p'密码' -N information_schema -e "select table_name from tables where TABLE_schema='库名' and table_name not like '%_backup' and table_name not like 'tmp_%'" > /docker-entrypoint-initdb.d/tbs.txt
#读取文件表名并通过mysqldump导出
cat /docker-entrypoint-initdb.d/tbs.txt|xargs mysqldump -uroot -p'密码' --single-transaction 库名 > /docker-entrypoint-initdb.d/库名_20240204.sql
注意:这里,排除关联和平时的like不一样,这里用的是and
3.导入数据
由于sql文件自带DROP TABLE IF EXISTS 所以只用先导入全量表结构,再导入sys表数据即可
参考文档:https://blog.csdn.net/oddrock/article/details/130044864
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
2023-01-11 windows2012通过powershell安装远程组件技巧
2023-01-11 内网jenkins跨版本升级