Print size statistics for each column of a table
This commit is contained in:
parent
047e59b60d
commit
d8b526a8b5
|
@ -0,0 +1,32 @@
|
|||
#!/usr/bin/python3
|
||||
import argparse
|
||||
import psycopg2
|
||||
import psycopg2.extras
|
||||
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--dbname")
|
||||
ap.add_argument("--user")
|
||||
ap.add_argument("--host")
|
||||
ap.add_argument("--schema", default="public")
|
||||
ap.add_argument("table")
|
||||
|
||||
args = ap.parse_args()
|
||||
|
||||
db = psycopg2.connect(host=args.host, dbname=args.dbname, user=args.user)
|
||||
csr = db.cursor(cursor_factory=psycopg2.extras.NamedTupleCursor)
|
||||
csr.execute(
|
||||
"""
|
||||
select * from information_schema.columns
|
||||
where table_schema = %s and table_name = %s
|
||||
order by ordinal_position
|
||||
""",
|
||||
(args.schema, args.table,))
|
||||
for c in csr.fetchall():
|
||||
q = "select" \
|
||||
f" min(pg_column_size({c.column_name}))," \
|
||||
f" avg(pg_column_size({c.column_name}))," \
|
||||
f" max(pg_column_size({c.column_name}))" \
|
||||
f" from {args.schema}.{args.table}"
|
||||
csr.execute(q)
|
||||
r = csr.fetchone()
|
||||
print(f"{c.column_name:7s}: {c.data_type:17s} {r.min} {r.avg:4.1f} {r.max:3d}")
|
Loading…
Reference in New Issue