如何在Snowflake与PySpark连接中指定多Schema并跨Schema读取数据
读取Snowflake中HR Schema数据的两种方案
你可以通过以下两种方式读取HR Schema的数据,无需完全替换现有配置:
方案一:在SQL查询中直接指定Schema(推荐,无需修改连接配置)
你的连接已指定数据库为Test,查询HR Schema的表时,直接在表名前加上Schema前缀即可,不用改动原sfparams配置。
示例代码(以Python的snowflake-connector为例):
import snowflake.connector # 用原配置建立连接 conn = snowflake.connector.connect(**sfparams) cursor = conn.cursor() # 读取Employee Schema的表 cursor.execute("SELECT * FROM Employee.employee_table;") employee_data = cursor.fetchall() # 读取HR Schema的表,指定Schema前缀 cursor.execute("SELECT * FROM HR.hr_table;") hr_data = cursor.fetchall() # 关闭连接 cursor.close() conn.close()
如果需要更严谨,也可以写全数据库+Schema+表名:SELECT * FROM Test.HR.hr_table;
方案二:切换当前连接的默认Schema
如果后续多数查询针对HR Schema,可通过两种方式切换默认Schema:
方式1:复制配置并修改Schema后重新连接
# 复制原配置,修改Schema为HR hr_sfparams = sfparams.copy() hr_sfparams["sfSchema"] = "HR" # 用新配置建立连接 hr_conn = snowflake.connector.connect(**hr_sfparams) hr_cursor = hr_conn.cursor() # 直接查询HR Schema的表 hr_cursor.execute("SELECT * FROM hr_table;") hr_data = hr_cursor.fetchall() hr_cursor.close() hr_conn.close()
方式2:在现有连接中执行切换语句
conn = snowflake.connector.connect(**sfparams) cursor = conn.cursor() # 切换到HR Schema cursor.execute("USE SCHEMA HR;") # 此时默认查询的是HR Schema的表 cursor.execute("SELECT * FROM hr_table;") hr_data = cursor.fetchall() # 如需切回Employee Schema,执行以下语句 cursor.execute("USE SCHEMA Employee;") cursor.close() conn.close()
内容的提问来源于stack exchange,提问作者Xi12
相关产品推荐
相关产品推荐

