Как получить все столбцы таблиц базы данных
Я хочу получить информацию обо всех базах данных и связанных с ними таблицах и столбцах. Очевидно, я могу сделать это из metastore. Но у меня нет доступа к нему. Так есть ли другой способ, вместо того, чтобы запрашивать каждую базу данных один за другим.
2 ответа
Вам нужен 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)
Вы должны быть в состоянии выполнить следующие команды. Я думаю, что вы могли бы написать это для запуска всех баз данных и всех таблиц
SHOW DATABASES;
SHOW TABLES;
DESCRIBE <table_name>;