两个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效果:查看表名所对应建表时间、数据表总行数、数据表总大小、使用大小、未使用大小

相关内容

热门资讯

一秒答解!aapoker辅助工... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在这款游戏中打...
科普!边锋老友圈怎么开辅助,h... 科普!边锋老友圈怎么开辅助,hhpoker是真的还是假的,高科技教程(有挂细节)-哔哩哔哩;边锋老友...
详细一下!小南四川长牌辅助,w... 详细一下!小南四川长牌辅助,wepoker辅助脚本,都是真的是有挂(哔哩哔哩)1、每一步都需要思考,...
推荐几款新版!拱趴大菠萝机器人... 推荐几款新版!拱趴大菠萝机器人,we-poker辅助软件教程,其实真的有挂(真的有挂)1、免费辅助多...
研究成果!wepoker破解版... 研究成果!wepoker破解版内购,wpk透视插件,普及教程(有挂分析)-哔哩哔哩;亲真的是有正版授...
科普一下!福建大玩家十三水辅助... 科普一下!福建大玩家十三水辅助,陕麻圈脚本辅助,一贯存在有挂(哔哩哔哩)1、上手简单,内置详细流程视...
必知教程!wpk辅助器是真的吗... 必知教程!wpk辅助器是真的吗,hhpoker开挂教程,切实真的有挂(有挂猫腻)破解侠是真的助透视。...
科技介绍!拱趴大菠萝技巧,红龙... 科技介绍!拱趴大菠萝技巧,红龙poker辅助平台,系统教程(发现有挂)-哔哩哔哩;拱趴大菠萝技巧AI...
解谜一下!乐平包王讨赏辅助,逸... 解谜一下!乐平包王讨赏辅助,逸趣鄱阳翻精辅助,原来是真的有挂(哔哩哔哩)1.乐平包王讨赏辅助 选牌创...
信息共享!德州透视插件,wep... 信息共享!德州透视插件,wepoker私人局辅助器怎么用,果然是真的有挂(真实有挂)1、wepoke...