Python程序文件如下:

# -*- coding: utf-8
# File : start.py
# Author : baoshan
import json
import pymysql
import cx_Oracle
import pandas as pd def main():
dataSum = []
connInfo = "connInfo.json" # 配置文件名称 connFile = open(connInfo, 'r', encoding='utf8')
connRecords = connFile.read(102400) #一次读取多个字节
connRecordsjs = json.loads(connRecords)
for single in connRecordsjs:
if "mysql" == single.get("dbtype"):
conn = pymysql.connect(host=single.get("host"), port=single.get("port"), user=single.get("user"),
passwd=single.get("passwd"), charset=single.get("charset"))
if "gongxiangwangzhan" == single.get("source", ""): # 共享网站 公安局、民政局、聊城市发展和改革委员会 定制
sql = "select table_schema as '数据库', " \
"table_name as '数据表', " \
"TABLE_COMMENT as '表注释', " \
"round(data_length/1024/1024,2) as '数据大小(M)', " \
"round(index_length/1024/1024,2) as '索引大小(M)', " \
"TABLE_ROWS as '行数' " \
"from information_schema.tables " \
"where TABLE_SCHEMA in ('"+single.get("dbschema")+"') " \
"AND TABLE_ROWS > 0 " \
"and table_name in "+single.get("selectkeystr")+""
else:
sql = "select " \
"table_schema as '数据库'," \
"table_name as '数据表', " \
"TABLE_COMMENT as '表注释', " \
"round(data_length/1024/1024,2) as '数据大小(M)', " \
"round(index_length/1024/1024,2) as '索引大小(M)', " \
"TABLE_ROWS as '行数'" \
"from information_schema.tables " \
"where TABLE_SCHEMA in ('"+single.get("dbschema")+"') " \
"and (table_name "+single.get("selectstr")+" '"+single.get("selectkeystr")+"') " \
"and TABLE_ROWS > 0"
df = pd.read_sql(sql, conn)
print(single.get("key"), str(df['行数'].sum()))
dataSum.append(df['行数'].sum())
conn.close()
elif "oracle" == single.get("dbtype"):
if "table" == single.get("selecttype"):
sql = "select owner as owner," \
"table_name as table_name," \
"tablespace_name as tablespace_name, " \
"num_rows as num_rows " \
"from all_tables " \
"where num_rows > 0 " \
"and table_name like '"+single.get("selectkeystr")+"' " \
"order by num_rows desc "
elif "database" == single.get("selecttype"): # 共享网站-oracle-工商局 定制
sql = "select owner as owner, " \
"table_name as table_name, " \
"tablespace_name as tablespace_name, " \
"num_rows as num_rows " \
"from all_tables " \
"where num_rows > 0 " \
"and tablespace_name in('"+single.get("dbschema")+"') " \
"order by num_rows desc"
db = cx_Oracle.connect(single.get("connstr"), encoding='utf-8')
cursor = db.cursor()
cursor.execute(sql)
rs = cursor.fetchall()
df = pd.DataFrame(rs)
print(single.get("key"), str(df[3].sum()))
dataSum.append(df[3].sum())
cursor.close()
db.close()
elif "sqlserver" == single.get("dbtype"):
print(single.get("key"), '')
dataSum.append(55568045)
# "SELECT A.NAME ,B.ROWS FROM sysobjects A JOIN sysindexes B ON A.id = B.id WHERE A.xtype = 'U' AND B.indid IN(0,1) and b.rows >0 ORDER BY B.ROWS DESC"
else:
print("please give right database type.")
connFile.close()
print('-'*30)
print("数据量总计:", str(sum(dataSum))) if __name__ == '__main__':
print("***一次性统计所有对接数据的委办局,和其对应的数据(条数)***")
main()

所需要的配置文件格式如下:

[
{
"key": "智慧公交",
"dbtype": "oracle",
"connstr": "nicai/123456@10.10.10.10:1521/ORCL",
"selecttype": "table",
"selectstr": "like",
"selectkeystr": "BUS%"
},
{
"key": "公共自行车",
"dbtype": "oracle",
"connstr": "nicai/123456@10.10.10.10:1521/ORCL",
"selecttype": "table",
"selectstr": "like",
"selectkeystr": "BICYCLE%"
},
{
"key": "安监局",
"dbtype": "mysql",
"host": "10.10.10.10",
"port": 3306,
"user": "nicai",
"passwd": "",
"charset": "utf8",
"selecttype": "table",
"selectstr": "like",
"dbschema": "statistics_data",
"selectkeystr": "ajj%"
},
{
"key": "百度交通",
"dbtype": "mysql",
"host": "10.10.10.2",
"port": 3306,
"user": "nicai",
"passwd": "",
"charset": "utf8",
"selecttype": "table",
"selectstr": "like",
"dbschema": "statistics_data",
"selectkeystr": "bdu%"
}
]

关于SqlServer的数据量查询,由于当时连不上,就没有嵌入到这个程序中。

不过查询的方法已经列出。

精进自己,分享他人!

谢谢

Python统计数据库中的数据量【含MySQL、Oracle】的更多相关文章

  1. 使用Python将Excel中的数据导入到MySQL

    使用Python将Excel中的数据导入到MySQL 工具 Python 2.7 xlrd MySQLdb 安装 Python 对于不同的系统安装方式不同,Windows平台有exe安装包,Ubunt ...

  2. spark查看DF的partition数目及每个partition中的数据量【集群模式】

    println("--------------------"+data.rdd.getNumPartitions) // 获取DF中partition的数目 val partiti ...

  3. Sql Server中的数据类型和Mysql中的数据类型的对应关系(转)

    Sql Server中的数据类型和Mysql中的数据类型的对应关系(转):https://blog.csdn.net/lilong329329/article/details/78899477 一.S ...

  4. 大数据量时Mysql的优化

    (转自网络) 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL的出现暂时 ...

  5. requests从api中获取数据并存放到mysql中

    python的requests库是一个非常强大的库,requests的安装方法十分简单,用: pip install requests 即可安装requests,安装成功后: import reque ...

  6. 用JDBC把Excel中的数据导入到Mysql数据库中

    步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...

  7. Scrapy基础(十)———同步机制将Item中的数据写在Mysql

      前面讲解到将Item中的所有字段都已经填写完成,那么接下来就是将他们存储到mysql数据库中,那就用到了pipeline项目管道了:  对项目管道的理解:做一个比喻,爬取好比是开采石油,Item装 ...

  8. 表数据量影响MySQL索引选择

    现象 新建了一张员工表,插入了少量数据,索引中所有的字段均在where条件出现时,正确走到了idx_nap索引,但是where出现部分自左开始的索引时,却进行全表扫描,与MySQL官方所说的最左匹配原 ...

  9. 大数据量时 Mysql LIMIT如何正确对其进行优化(转载)

    以下的文章主要是对Mysql LIMIT简单介绍,我们大家都知道LIMIT子句一般是用来限制SELECT语句返回的实际行数.LIMIT取1个或是2个数字参数,如果给定的是2个参数,第一个指定要返回的第 ...

随机推荐

  1. IDEA创建本地Spark程序,并本地运行

    1   IDEA创建maven项目进行测试 v创建一个新项目,步骤如下: 选择“Enable Auto-Import”,加载完后:选择“Enable Auto-Import”,加载完后: 添加SDK依 ...

  2. mac php Swoole入门

    一. swoole 扩展安装 安装前必须保证系统已经安装了下列软件 php-7.0 或更高版本 gcc-4.8 或更高版本 make autoconf pcre (CentOS系统可以执行命令:yum ...

  3. Linux(CentOS7)下安装Mysql8数据库

    一.Linux版本 二.先下载Linux下的Mysql包,打开Mysql官网 https://www.mysql.com/ 点击DOWNLOAD,进入 https://www.mysql.com/do ...

  4. mysql连接查询:3个数据表操作研究

    首先,新建数据表aaa.bbb以及他们相关联的数据表avb:字段名如下图 填充点数据,如下: 上面设计表的时候,故意在两个表中有相同字段con,如果不做处理的话,在php程序中,看看什么情况?得到的结 ...

  5. 浅谈Python设计模式 - 外观模式

    声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 外观模式 外观模式的核心在于将复杂的内部实现包装起来,只向外界提供简单的调用接口 ...

  6. Codeforces C Match Points(二分贪心)

    题目描述: Match Points time limit per test 2 seconds memory limit per test 256 mega bytes input standard ...

  7. httprunner学习23-加解密

    前言 有些接口的请求参数是加密的,返回的接口内容也是需要解密才能看到. 加密接口 比如当我们访问下面这个登陆的接口时,请求参数账号和密码都是需要加密,通过parms参数传过去,服务器才能识别到 没加密 ...

  8. 文件夹备份tar脚本

    #! /bin/sh SOURCEDIR=/data/OA DESTDIR=/data/OAbackup TARDIR=/data/gz #拷贝源文件夹至目标文件夹 cp -r $SOURCEDIR ...

  9. dump array

    <?php //array_dump.php $a=array(); $a[]=1; $a[]=2; $a[]=3; $a[]=4; $a[]='a'; $a[]='b'; $a[]='c'; ...

  10. 解决关于VC++ 6.0打开文件时,程序停止的问题

    不少boys和girls安装VC++ 6.0英文版后,开始学习C++语言,但是使用软件的过程中,点击“打开”时,就会出现程序进程错误,崩溃的事儿,很是郁闷.最后直接一个对话框如下: 并且vc6.0直接 ...