Как получить все имена каталогов, имена схем и имена таблиц в базе данных, такой как снежинка или любой другой такой базе данных? - PullRequest
0 голосов
/ 04 августа 2020

Мне нужно отбросить несколько столбцов и заглавные буквы в таблицах снежинок. Для этого мне нужно l oop через все каталоги / dbs, их соответствующие схемы, а затем таблицы. Мне нужно, чтобы это было в python в списке схем каталогов, а затем в таблицах, после чего я буду вызывать запрос SQL для выполнения манипуляций.

Как это сделать?

1. Список всех имен каталогов

2. Список всех имен схем

3. Список всех имен таблиц

Я установил соединение, используя python коннектор снежинка

Ответы [ 3 ]

0 голосов
/ 04 августа 2020

Самый простой способ - выполнить описанный ниже процесс.

show databases;
select "name" from table(result_scan(last_query_id()));

Это даст вам список баз данных. Поместите их в список. Просмотрите этот список и для каждого элемента выполните следующие действия:

use <DBNAME>;
show schemas;
select "name" from table(result_scan(last_query_id()));

Получите список схем

use schema <SchemaName>;
show tables;
select "name" from table(result_scan(last_query_id()));

Получите список таблиц и затем запустите свои запросы.

0 голосов
/ 04 августа 2020

Возможно, вам не понадобится result_scan. Недавно я создал программу python для вывода списка всех столбцов для всех таблиц в Snowflake. Моим требованием было проверить каждый столбец и вычислить некоторую числовую статистику столбцов. Я смог сделать это, используя только «Показать столбцы». Я открыл исходный код некоторых из распространенных операций со снежинками, которые доступны здесь

https://github.com/Infosys/Snowflake-Python-Development-Framework

Вы можете клонировать этот код, а затем использовать эту структуру для создания своего python программа для перечисления столбцов, как показано ниже, а затем вы можете делать все, что хотите, с деталями столбца

##
from utilities.sf_operations import Snowflakeconnection

connection = Snowflakeconnection(profilename ='snowflake_host')
sfconnectionresults = connection.get_snowflake_connection()

sfconnection = sfconnectionresults.get('connection')
statuscode = sfconnectionresults.get('statuscode')
statusmessage = sfconnectionresults.get('statusmessage')

print(sfconnection,statuscode,statusmessage)

snow_sql = 'SHOW COLUMNS;'
queryresult = connection.execute_snowquery(sfconnection,snow_sql);
print(queryresult['result'])
print('column_name|table_name|column_attribute')
print('---------------------------------------------')
for rows in queryresult['result']:
    table_name = rows[0]
    schema_name = rows[1]
    column_name = rows[2]
    column_attribute = rows[3]
    is_Null = rows[4]
    default_Value = rows[5]
    kind = rows[6]
    expression = rows[7]
    comment = rows[8]
    database_name = rows[9]
    autoincrement = rows[10]

    print(column_name+'|'+table_name+'|'+column_attribute)
0 голосов
/ 04 августа 2020

Лучшим источником этой информации является ваша SNOWFLAKE.ACCOUNT_USAGE папка, которую предоставляет Snowflake. Вам необходимо предоставить привилегии любой роли, которую вы используете для соединения с Python. Однако оттуда есть следующие представления: DATABASES, SCHEMATA, TABLES и другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...