IT门户, 中国互联网人工智能物联网行业资讯平台--公众IT
新闻来源:互联网资料整理       发布时间:2023/4/6 4:48:33       共计:4638 浏览

这个解析不好弄,其实可以换一种思路,把所有的表名全查出来,然后在按表名生成导出脚本,生成的文件就一个表一个了。

shell样例如下,仅供参考,请在自己测试环境下测试。脚本可以包装在一个大的shell里面一起执行。

一、生成所有的表名

mysql<<EOF

use cpai;

show tables;

quit

EOF

输入结果保持到tmp.txt

二、生成导出单个表数据的脚本

awk 'NR>1' tmp.txt >tables.txt #从第二行开始取

cat tables.txt |awk '{printf "mysqldump 数据库名 %s >%s.sqln",$1,$1}' >mysql_dump_sig.sh

三、执行mysql_dump_sig.sh脚本,既可以导出一个个表到单独的每个文件里面。

mysqldump可以把整个数据库的所有表都备份到一个sql文件里,但随着数据量的增大,往往需要查看历史记录的某个表数据,再把对应的备份sql导入就很耗时间。于是想到,mysqldump备份的时候直接按表来备份到不同的sql文件里,但这样做可能会导致数据不一致,造成以后故障恢复时出问题所以现在想到的方法是,备份的时候还是把所有表备份到一个sql文件里,然后再通过shell做分割。以下是截取开头的部分内容。-- MySQL dump 10.13 Distrib 5.5.20, for Linux (x86_64)---- Host: localhost,Database: misscoquines-- -------------------------------------------------------- Server version,5.5.20-log/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;/*!40103 SET TIME_ZONE='+00:00' */;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHEC
版权说明:
本网站凡注明“公众IT 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
您可以扫描右侧微信二维码联系我们。
网站首页 关于我们 联系我们 合作联系 会员说明 新闻投稿 隐私协议 网站地图