snowflake-cloud-data-platform - Snowflake Python 连接器:复制命令状态和错误处理
问题描述
根据 Snowflake docs,当用户执行复制命令时,它将返回 3 个状态值中的 1 个:
- 加载
- 加载失败
- 部分加载
我的问题是,如果我使用 Python Snowflake 连接器(请参见下面的示例代码)执行复制命令,如果返回的状态为加载失败或部分加载,是否会引发异常?
谢谢!
copy_dml = 'copy into database.schema.table ' \
'from @fully_qualified_stage pattern = \'.*'+ table_name +'.*[.]json\' ' \
'file_format = (format_name = fully_qualified_json_format) ' \
'force = true;'
try:
import snowflake.connector
#-------------------------------------------------------------------------------------------------------------------------------
#snowflake variables
snowflake_warehouse = credentials.iloc[0]['snowflake_warehouse']
snowflake_account = credentials.iloc[0]['snowflake_account']
snowflake_role = credentials.iloc[0]['snowflake_role']
snowflake_username = credentials.iloc[0]['Username']
snowflake_password = credentials.iloc[0]['Password']
snowflake_connection = ''
cs = ''#snowflake connection cursor
exec_copy_dml = ''
copy_result_field_metadata = ''
copy_result = ''
snowflake_copy_result_df = ''
#-------------------------------------------------------------------------------------------------------------------------------
# load JSON file(s) into Snowflake
snowflake_connection = snowflake.connector.connect(
user = snowflake_username,
password = snowflake_password,
account = snowflake_account,
warehouse = snowflake_warehouse,
role = snowflake_role)
cs = snowflake_connection.cursor()
exec_copy_dml = cs.execute(copy_dml)
copy_result = exec_copy_dml.fetchall()
copy_result_field_metadata = cs.description
snowflake_copy_result_df = snowflake_results_df(copy_result_field_metadata,copy_result)
except snowflake.connector.errors.ProgrammingError as copy_error:
copy_exception_message = "There was a problem loading JSON files to Snowflake," + \
"a snowflake.connector.errors.ProgrammingError exception was raised."
print(copy_exception_message)
raise
except Exception as error_message:
raise
finally:
snowflake_connection.close()
解决方案
我相信它不会引发负载状态异常,您必须检查负载状态并在需要时采取必要的措施。
推荐阅读
- ios - 如何将触摸事件传递给另一个视图?
- opencv - 我正在尝试使用 Tensorflow 检测眼睛。是否有任何预先训练的眼睛检测模型?
- algorithm - 给定序列 S 和 T,找到一个序列 X 和 Y 使得 S 和 T 属于 X 和 Y 的 shuffle。(X 和 Y 可能不存在)
- javascript - Gatsby Develop and Build 给出不同的结果
- reactjs - React - 用于编辑数组的模块
- c# - 按字典(字符串,int [])标记前景色(rgb)
- javascript - 检测何时退出全屏模式
- c++ - 在 Eclipse 2020-03 中为 C/C++ 启用自动完成功能
- javascript - 复选框事件
- python - 熊猫 - 以不同的顺序排列一组