使用PySpark JDBC向PostgreSQL追加数据时遇表已存在错误
问题排查与解决方案
1. 先修复代码语法错误
你的Python函数定义存在缩进问题,函数体代码未缩进,导致postgres_writes函数实际为空,你执行的可能是未指定append模式的写入逻辑,这才触发了建表报错。修正后的代码如下:
def postgres_writes(url, driver, username, password, table_name, df): df.write \ .format("jdbc") \ .option("url", url) \ .option("dbtable", table_name) \ .option("user", username) \ .option("password", password) \ .option("driver", driver) \ .mode("append") \ .save()
2. 其他排查点
如果修正缩进后仍报错,检查以下内容:
- 确认DataFrame的schema与目标表
account的结构完全匹配:字段名称、数据类型需一一对应(比如Spark的StringType对应PostgreSQL的varchar,IntegerType对应int),类型不匹配可能导致Spark误判表结构,尝试重建表。 - 检查PostgreSQL JDBC驱动版本:确保驱动jar包版本与数据库版本兼容(比如PostgreSQL 14+推荐使用42.2.x及以上版本的驱动)。
- 确认目标表确实存在于指定数据库中,且你使用的数据库用户拥有该表的
INSERT权限。 - 排查是否有其他代码逻辑在调用写入函数前,尝试创建同名表导致冲突。
内容的提问来源于stack exchange,提问作者SK ASIF ALI
相关产品推荐
相关产品推荐

