两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息(1)
创始人
2025-01-17 20:32:55
0

def get_databases_name(self, cursor):

“”“获取服务器下所有库名”“”

sql = ‘SELECT * FROM sys.sysdatabases’

cursor.execute(sql)

rows = cursor.fetchall() # 逐行读取

存储

databases_name = []

for list in rows:

databases_name.append(list[0])

移除系统库

databases_name.remove(“master”)

databases_name.remove(“model”)

databases_name.remove(“msdb”)

databases_name.remove(“tempdb”)

移除无用库,如果没有则可以把try…except删除

try:

databases_name.remove(“ReportServer”)

databases_name.remove(“ReportServerTempDB”)

except Exception as e:

print(e)

print(databases_name)

return databases_name

  • 提取服务器下所有数据库名,用于后续SQL语句的拼接,利用列表的remove方法移除不需要的数据库

3)获取表详细信息并保存

def save(self, databases_name, cursor, server_name):

“”“获取表信息并保存”“”

加入count是为了换行写入数据

count = self.count

databases_name:[‘master’, ‘tempdb’, ‘model’, ‘msdb’, ‘ReportServer’, ‘ReportServerTempDB’, ‘test’]

取出每个库名,用于拼接sql,获取对应库名下表信息

for database in databases_name:

sql = ‘’’

USE [%s]

SELECT a.name table_name,

a.crdate crdate,

b.rows rows,

8*b.reserved/1024 reserved,

rtrim(8*b.dpages/1024) used,

8*(b.reserved-b.dpages)/1024 unused

FROM sysobjects AS a

INNER JOIN sysindexes AS b ON a.id = b.id

WHERE ( a.type = ‘u’ )

AND ( b.indid IN ( 0, 1 ) )

ORDER BY a.name,b.rows DESC;

‘’’ % database

cursor.execute(sql)

rows = cursor.fetchall() # 逐行读取

for i in rows:

要写入excel的数据

server = server_name

database_name = database

table_name = i[0]

crdate = i[1]

rows_size = i[2]

reserved = i[3]

used = i[4]

unused = i[5]

打印获取到的数据

print(server, database_name, table_name, crdate, rows_size, reserved, used, unused)

row:count所对应的就是行数,从第二行开始累加,colum:表示第几列,value:表示插入的值

self.wb.cell(row=count, column=1, value=server)

self.wb.cell(row=count, column=2, value=database_name)

self.wb.cell(row=count, column=3, value=table_name)

self.wb.cell(row=count, column=4, value=crdate)

self.wb.cell(row=count, column=5, value=rows_size)

self.wb.cell(row=count, column=6, value=reserved)

self.wb.cell(row=count, column=7, value=used)

self.wb.cell(row=count, column=8, value=unused)

count加1,进入到下一行写入数据

count += 1

self.count = count

  • 拼接SQL效果:查看表名所对应建表时间、数据表总行数、数据表总大小、使用大小、未使用大小

相关内容

热门资讯

科普!全民比鸡手游辅助,aap... 科普!全民比鸡手游辅助,aapoker怎么开辅助器,总结教程(有挂实锤)-哔哩哔哩1、下载好全民比鸡...
教你透视!wepoker有没有... 教你透视!wepoker有没有挂,hhpoker辅助软件是真的么,教材教程(有挂方式)-哔哩哔哩所有...
记者发布!指尖四川辅助破解版苹... 记者发布!指尖四川辅助破解版苹果,wepoker软件靠谱么,资料教程(存在有挂)-哔哩哔哩1、完成指...
了解透视!wepoker透视脚... 了解透视!wepoker透视脚本视频,德州来玩辅助器,课程教程(有挂秘籍)-哔哩哔哩1、上手简单,内...
避坑细节!泸州大二新手攻略,w... 避坑细节!泸州大二新手攻略,wepoker-h5下载,要领教程(有挂神器)-哔哩哔哩1、许多玩家不知...
辅助透视!hhpoker辅助靠... 辅助透视!hhpoker辅助靠谱吗,hhpoker免费辅助器,课程教程(有挂攻略)-哔哩哔哩1、任何...
盘点一款!!福建天天开心辅助器... 盘点一款!!福建天天开心辅助器真的假的,wepoker手机插件,绝活教程(有挂技巧)-哔哩哔哩1、金...
曝光透视!wepoker私人局... 曝光透视!wepoker私人局怎么玩,cloudpoker作必弊,课程教程(有挂教程)-哔哩哔哩1、...
六分钟了解!hhpoker作笔... 六分钟了解!hhpoker作笔实战视频,竞技联盟辅助插件,教程书教程(有挂猫腻)-哔哩哔哩1、该软件...
解谜透视!德普之星有透视辅助吗... 解谜透视!德普之星有透视辅助吗,wepoker怎么挂底牌,模块教程(有挂教程)-哔哩哔哩1、用户打开...