mysql批量导出多个数据库_利用脚本批量导出数据库数据

一 环境说明:我有100多台机器,需要去每台机器上面的数据库导出对应的数据,并且需要传两个参数服务器ip和数据库id,导出来之后,再把所有的文件合成一个excle文件

二 实现过程:

1 首先自己整理一份ip对应id的文件,例如:`3070c023c4294c6faff627467a2ba8b0  58.116.1.1`

2 写一个导出数据的脚本#!/bin/bash

ip=$1

id=$2

mysql -uedu_platform -pedu_platform  -h$ip  --database edu_platform -e"

SELECT COALESCE(bc.name,'-') AS '学校',t.device_count AS '绑定数量'

FROM (

SELECT bs.school_business_key, COUNT(DISTINCT bu.device_number) AS device_count

FROM base_user bu

INNER JOIN bd_student bs ON bs.id = bu.id

WHERE bu.category = 'student' AND bu.device_number IS NOT NULL AND bu.device_number <> '' AND bs.school_business_key = '$id'

GROUP BY bs.school_business_key) t

LEFT JOIN bd_school bc ON bc.business_key = t.school_business_key">/home/shell9-12/file/$1_$2.xls      # 导出的数据都放到指定目录下面

if [ $? == 0 ];then

echo "INFO:导出成功"

else

echo "Error:导出失败"

fi

3 写一个传参数的脚本start.sh,注意:两个参数不要写反了

c1 和c2是要传递的两个参数,school.txt是你包含id和ip的文件信息while read c1 c2

do

sh /home/shell9-12/tongji.sh $c2 $c1   #执行第二个脚本,

done 

然后你执行.start.sh脚本,会在/home/shell0-12/file这个目录下生成很多xls文件

4 整理数据,把每个文件的内容放到一个文件里我用的python实现的import os

dir = "./file"

# print(os.listdir(dir))

for name in os.listdir(dir):

with open("%s/%s" % (dir, name), encoding="utf-8") as f, open("tongji02.xls", "a") as f1:

for i in f:

s = i.replace("学校  绑定数量", "").strip()

if s:

f1.write(s.strip()+"\n")

你可能感兴趣的:(mysql批量导出多个数据库)