Как получить все столбцы таблиц базы данных

Я хочу получить информацию обо всех базах данных и связанных с ними таблицах и столбцах. Очевидно, я могу сделать это из 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>;
Другие вопросы по тегам