如何在 python 中定义正在写入 AWS Redshift Postgres DB 的数据的列类型
Posted
技术标签:
【中文标题】如何在 python 中定义正在写入 AWS Redshift Postgres DB 的数据的列类型【英文标题】:How to define column type of data that is being written to a AWS Redshift Postgres DB in python 【发布时间】:2020-03-13 09:09:01 【问题描述】:我有一个看起来像这样的熊猫数据框:
A B C D
80.00 2020-03-07 19:36:50 testing approved
80.00 2020-03-07 19:46:50 testing approved
我已经成功地将这个 pandas 数据框写入数据库,如下所示:
conn = create_engine('postgresql://username:password@redshift-blablabla.eu-west-1.redshift.amazonaws.com:5439/database_name')
dataframe.to_sql('table_name', conn,index=False, if_exists='replace')
当我尝试将此表用作在 Superset 中可视化数据的源时,我注意到所有内容都存储为 varchar,我不能使用列 B
作为日期戳来序列化数据。
写入数据库时如何定义列类型?并且日期戳是否应该只有日期而没有小时才能作为日期戳有效?
感谢您的帮助。
【问题讨论】:
【参考方案1】:to_sql 有一个参数dtype,您可以通过该参数将单个列的数据类型作为字典提供,或者同时将所有列的数据类型作为标量提供。你试过了吗?
dtype : 字典或标量,可选
指定列的数据类型。如果使用字典,键应该是列名,值应该是 SQLAlchemy 类型或 sqlite3 旧模式的字符串。如果提供了标量,它将应用于所有列。
【讨论】:
以上是关于如何在 python 中定义正在写入 AWS Redshift Postgres DB 的数据的列类型的主要内容,如果未能解决你的问题,请参考以下文章
使用 python 写入 aws lambda 中的 /tmp 目录
如何在 AWS Datapipeline 中的 Python 脚本中提供 Redshift 数据库密码?
我如何使用 aws lambda 将文件写入 s3 (python)?