0

我想获取所有数据库及其相关的表和列信息。显然我可以从 Metastore 中做到这一点。但我无权访问它。那么除了一个一个地查询每个数据库之外,还有其他方法吗?

4

2 回答 2

1

你需要python,但我是这样做的:

databases = run_hive_query('show schemas')
databases = list(databases.database_name)

schema = {'DB':[],
      'Table':[],
      'Column':[], 
      'DataType':[]}
for db in databases:
tables = run_hive_query( 'show tables from ' +db)
tables = list(tables.tab_name)
for tb in tables:
    try:
        columns = (run_hive_query('desc ' + db+'.'+tb))
        print(db + '  '+ tb)
    except:
        print('failed'+db + '  '+ tb)
    try:
        for x in range(columns.shape[0]):
            schema['DB'].append(db) 
            schema['Table'].append(tb)
            schema['Column'].append(columns.iloc[x][0])
            schema['DataType'].append(columns.iloc[x][1])
    except:
        print('failed'+db + '  '+ tb)    
于 2018-07-27T16:18:24.037 回答
0

您应该能够运行以下命令。我想您可以编写脚本以在所有数据库和所有表中运行

SHOW DATABASES;
SHOW TABLES;
DESCRIBE <table_name>;
于 2017-12-04T08:31:32.563 回答