我在Redshift上有一个表,我想使用插入一些数据。
redshift表有模式:
CREATE TABLE admin.audit_of_all_tables
(
wh_table_name varchar,
wh_schema_name varchar,
wh_population_method integer,
wh_audit_date timestamp without time,
wh_percent_change numeric(15,5),
wh_s3_path varchar
)
DISTSTYLE AUTO;在我的dataframe中,我希望只保留前4列的值,并将该dataframe的数据写入此表。
我的数据是这样的:

现在,我想在Redshift上对我的表执行df.write.format,但我需要以某种方式指定只向前四列插入数据,而不传递最后2列的值(默认情况下它们保持为空)。
是否知道如何使用dataframe.write.format (或任何方法)来指定这一点。
感谢您的阅读。
发布于 2021-09-19 15:32:10
您可以使用selectExpr来选择前四列加上null的两个附加列,这些列都是投射,以达到所需的类型:
df2 = df.selectExpr("table_name as wh_table_name",
"schema_name as wh_schema_name",
"population_method as wh_population_method",
"audit_date as wh_audit_date",
"cast(null as double) as wh_percent_change",
"cast(null as string) as wh_s3_path")
df2.write....https://stackoverflow.com/questions/69243305
复制相似问题