bigtables.py
author Radek Brich <brich.radek@ifortuna.cz>
Tue, 10 Dec 2013 11:39:57 +0100
changeset 93 b72591087495
parent 83 515fadd3d286
child 95 6adcb7ee4517
permissions -rwxr-xr-x
Change python3.2 to python3 in scripts.

#!/usr/bin/env python3

from pgtoolkit import pgbrowser, toolbase
from pycolib import prettysize


class BigTablesTool(toolbase.SimpleTool):
    def __init__(self):
        toolbase.SimpleTool.__init__(self, name='bigtables', desc='List largest tables.')
        self.init()

    def main(self):
        browser = pgbrowser.PgBrowser(self.pgm.get_conn('target'))

        # scan all tables from all shemas, remember names and sizes
        all_tables = []
        schemas = browser.list_schemas()
        for schema in schemas:
            tables = browser.list_tables(schema['name'])
            for table in tables:
                table_name = '%s.%s' % (schema['name'], table['name'])
                all_tables.append({'name': table_name, 'size': table['size']})

        # print names and sizes of 20 largest tables
        for table in sorted(all_tables, reverse=True, key=lambda x: x['size'])[:20]:
            print(prettysize.prettysize_short(table['size']).rjust(8), table['name'], sep='  ')


tool = BigTablesTool()
tool.main()