Yu *_*hen 6 python sqlalchemy pandas snowflake-cloud-data-platform
我有一个 Pandas 数据框,其中包含多个列表列。我想将它们作为ARRAY数据类型插入到我的 Snowflake 表中。
传统上,我使用 PostgreSQL,并简单地插入为df_to_insert.to_sql(TABLE_NAME, sqlalchemy_connection, **other_parameters).
然而,我正在努力插入雪花。当我有一个列表列时,sqlAlchemy Snowflake 方言认为它是一个字符串:
表达式类型与列数据类型不匹配,需要 ARRAY,但列 NAME_OF_COLUMN_WITH_LISTS 为 VARCHAR(2)
我尝试通过添加显式数据类型来向 sqlAlchemy 引擎提示该列不是字符串:
df_to_insert.to_sql("MY_SNOWFLAKE_TABLE_NAME",
snowflake_connection,
if_exists="append",
index=False,
dtype={'NAME_OF_COLUMN_WITH_LISTS': sqlalchemy.types.JSON})
Run Code Online (Sandbox Code Playgroud)
这只会让我:
sqlalchemy.exc.StatementError:(builtins.AttributeError)“SnowflakeDialect”对象没有属性“_json_serializer”
将数据插入变体/数组类型的雪花表并仍然使用 pandas / sqlalchemy 的最佳方法是什么?或者目前还没有什么好的办法吗?
小智 1
解决这个问题的一个直接方法是:
create or replace table as select from stage并将字段转换为 select 语句中的正确类型。| 归档时间: |
|
| 查看次数: |
3093 次 |
| 最近记录: |