阿里云RDS导出数据库结构整理工具

本文介绍如何通过Shell脚本自动整理阿里云RDS导出的数据库结构,包括重命名解压后的SQL文件、删除无用设定、转换文件编码格式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文使用shell实现一个小工具,可以整理阿里云RDS导出数据库结构的zip文件,整理为可直接使用的sql文件。

阿里云RDS导出的数据库结构sql需要整理的地方

1.解压后sql文件名称缺少数据库名称标识

阿里云RDS导出的数据库结构sql,会压缩为一个zip文件,解压后的sql文件名称没有带上数据库名。

例如
数据库名称是test_user

导出后的zip文件名称: test_user_1616950_all_sql.zip
解压后的sql文件名称: 1616950_all.sql

如果同时存在多个数据库导出文件,这样比较难去区分,因此需要对解压后的文件重命名,带上数据库名称。

2.附带不需要用到的设定数据

因为只导出结构,并不需要数据,因此我们并不需要获取之前数据库表的AUTO_INCREMENT设定,对于类似这种的设定,也需要去掉。

3.解压后的sql文件为utf8 bom

如果我们执行这个sql创建数据表是使用例如php代码读取后执行,sql文件带utf8 bom会导致执行出错,因此需要把sql文件的utf8 bom头去掉。

整理步骤

1.解压文件

2.解压后文件按数据库名重命名

3.删除AUTO_INCREMENT及ROW_FORMAT设定参数

4.去掉文件的utf8 bom头


代码如下

#!/bin/bash

# 解压阿里云导出的数据库zip文件,执行重命名,转utf8 not bom编码,删除无用语句等处理
# 
# Date:     2017-12-18
# Author:   fdipzone
# Ver:      1.0
#

# 保存解压后重命名的sql文件
sqlfile=()

# 遍历当前目录下所有zip文件
for file in $(find . -name "*.zip" -type f) ; do  

    # 定义解压后重命名的文件名
    tmp_sqlfile=$(echo $file|sed 's/_[0-9]*_all_sql.zip/.sql/')
    tmp_sqlfile=${tmp_sqlfile:2}

    # 保存到数组
    sqlfile+=($tmp_sqlfile)

    # 执行解压
    unzip_file=$(unzip $file|grep 'inflating'|awk -F ' ' '{print $2}')

    # 重命名
    $(mv $unzip_file $tmp_sqlfile)

done

# 遍历所有sql文件,删除无用语句,且转为utf8 not bom编码 
for f in ${sqlfile[*]}; do

    # 删除ROW_FORMAT=XXX
    $(sed -i 's/ROW_FORMAT=[A-Z]*//g' $f)

    # 删除AUTO_INCREMENT=XXX
    $(sed -i 's/AUTO_INCREMENT=[0-9]*//g' $f)

    # 删除utf8 bom
    $(sed -i 's/^\xEF\xBB\xBF//g' $f)

done

exit 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值