1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#!/usr/bin/python -S
#
# Copyright 2009 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
"""List empty database tables."""
__metaclass__ = type
import _pythonpath
from optparse import OptionParser
from canonical.database.sqlbase import connect
from canonical.launchpad.scripts import db_options
from fti import quote_identifier
def main(options):
con = connect(options.dbuser)
cur = con.cursor()
cur.execute("""
SELECT relname FROM pg_class,pg_namespace
WHERE pg_class.relnamespace = pg_namespace.oid
AND pg_namespace.nspname='public'
AND pg_class.relkind = 'r'
ORDER BY relname
""")
for table in (row[0] for row in cur.fetchall()):
cur.execute(
"SELECT TRUE FROM public.%s LIMIT 1" % quote_identifier(table)
)
if cur.fetchone() is None:
print table
if __name__ == '__main__':
parser = OptionParser()
db_options(parser)
(options, args) = parser.parse_args()
main(options)
|