将字符串列作为 VARCHAR 批量上传到 Amazon Redshift

Bulk upload string columns as VARCHAR to Amazon Redshift

是否可以在不自行创建 table 的情况下将 VARCHARS 批量传递给 SQL 数据库 (AWS Redshift) 而不是字符串?

我有以下代码:

import pandas as pd

d = {'actually_a_string': "Super_Long_String_Even_Longer_Than_256_Characters"}

df = pd.DataFrame(data=d)

现在我想将它批量上传到 AWS Redshift。
问题是:他们只允许字符串的字符 < 256.

所以当我批量上传时:

import sqlalchemy as sa
import psycopg2
engine = sa.create_engine('postgres://[USER]:[PASSWORD]@[URL]/[PORT]/[DB_NAME]'
df.to_sql(con=engine, name='test', if_exists='replace', index=False)

它给我以下错误:
(psycopg2.errors.StringDataRightTruncation) 类型字符值太长 varying(256)

Redshift 实际上允许 VARCHARS 很大,比如 60k 个字符左右。

是否可以通过某种方式告诉 postgres 传递 VARCHARS 而不是字符串?
我的 table 很大,所以我真的不想自己创建它并定义所有列等。

提前谢谢你:)


我找到了批量上传的方法
orders.to_sql(con=engine, 
dtype={col_name: sqlalchemy.types.VARCHAR (length=60000) for col_name in orders}, 
name='orders_shopify_de', if_exists='replace', index=False, method='multi')

虽然为每一列定义硬编码长度并不是最佳解决方案,但它可以正常工作。
所以结案了。谢谢您的帮助。 :)