我是《雪花》的新手。我正在尝试使用python脚本获取数据库中所有表的ddl
import snowflake.connector
import sys
# Gets the version
cnx = snowflake.connector.connect(
user='username',
password='password',
account='account',
database='db',
schema='schema',
warehouse='warehouse',
role='role'
)
cnx.cursor().execute("USE warehouse warehouseName")
cnx.cursor().execute("USE database dbName")
cnx = cnx.cursor()
dbSchema='schema name'
sql_select_objects = "select TABLE_NAME,TABLE_SCHEMA,TABLE_TYPE from INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='" + dbSchema + "';"
print(sql_select_objects)
try:
cnx.execute(sql_select_objects)
print('Query ID=' + cnx.sfqid)
rows = cnx.fetchall()
print("rows count:", len(rows))
for row in rows:
#print(row[0])
file = open(row[0] + ".sql","w")
rw='"' + row[0] + '"'
print(rw)
sql_ddl_object = "SELECT GET_DDL('TABLE', '" + row[0] + "')"
print(sql_ddl_object)
cnx.execute(sql_ddl_object)
print('SQL2 sfqid=' + cnx.sfqid)
row_ddl_table = cnx.fetchall()
#print(row_ddl_table[0][0])
file.write(str(row_ddl_table[0][0]))
file.write("\n")
finally:
cnx.close()
当我执行上述脚本时,出现错误:
snowflake.connector.errors.ProgrammingError: 002003 (02000): SQL compilation error:
Table 'SNOWFLAKE_TEST' does not exist or not authorized.
在“SELECT GET_DDL('TABLE','“+row[0]+”)”行中,我认为python没有正确地分析行[0]的值。你能告诉我错误在哪里吗
问题很可能不是表名,而是代码中使用的角色。角色很可能无法访问数据库及其表,因此会看到错误消息
请同时使用架构和表名,因为可能会在不同的架构中使用表雪花_测试:
我还将表名和模式名用双引号括起来,因为您的模式或表可能是使用区分大小写的名称创建的:
相关问题 更多 >
编程相关推荐