实现mysql数据字典自动同步到showdoc脚本
介绍
好的数据字典文档能够清晰地反映出数据库的结构以及相关释义,方便技术人员查阅。我们很容易使用showdoc来生成展示数据库结构的字典文档,并且能根据数据库结构的变动来自动修改文档,省去人工编辑的麻烦。
这一切的自动化依赖于我们的上报脚本。你需要下载我们的脚本到你的服务器上执行,上传数据库结构信息到showdoc。上报脚本的源码完全公开,你可以阅读之以确认安全。我们确保它只会上传基本数据库结构信息,不会上传数据库密码配置、业务数据等敏感信息。
目前只支持linux下的mysql数据库,更多类型未来再考虑。
脚本的代码如下:
#!/bin/bash
#
#
#
host="192.168.1.116" #数据库所在地址。默认是localhost
port=3306 #数据库所在端口。默认是3306
user="qsdi_***" #数据库的用户名
password="qsdi***" #密码
db="qsdi" #要同步的数据库名。要同步多个db可以将本脚本复制多份
api_key="d0a4a89fb9e56401441b275e680c66c1903686937" #api_key
api_token="3f015b97624779ecdba272d65d89e7ed2069707790" #api_token
cat_name="数据库设计文档" #可选。如果想把生成的文档都放在项目的子目录下,则这里填写子目录名。
url="http://192.168.1.123:4999/server/?s=/api/open/updateDbItem" #可选。同步到的url。
#
#
#
#
#
#
export MYSQL_PWD=${password}
COMMAND="set names utf8;select TABLE_NAME ,TABLE_COMMENT from tables where TABLE_SCHEMA ='${db}' "
declare table_info=`mysql -h${host} -P${port} -u${user} --show-warnings=false -D information_schema -e "${COMMAND}" `
#echo $table_info
COMMAND="set names utf8;select TABLE_NAME ,COLUMN_NAME, COLUMN_DEFAULT ,IS_NULLABLE ,COLUMN_TYPE ,COLUMN_COMMENT from COLUMNS where TABLE_SCHEMA ='${db}' "
declare table_detail=`mysql -h${host} -P${port} -u${user} --show-warnings=false -D information_schema -e "${COMMAND}" `
#echo $table_detail
table_info2=${table_info//&/_this_and_change_}
table_detail2=${table_detail//&/_this_and_change_}
curl -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' "${url}" --data-binary @- <<CURL_DATA
from=shell&table_info=${table_info2}&table_detail=${table_detail2}&api_key=${api_key}&api_token=${api_token}&cat_name=${cat_name}
CURL_DATA
export MYSQL_PWD=""
脚本命名:syn_mysql.sh
添加执行权限:sudo chmod a+x syn_mysql.sh
执行脚本:sh syn_mysql.sh
返回结果:成功(可以到showodoc查看是否同步成功字典)
设置定时执行脚本
crontab -e 添加定时、路径