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