所以我使用pyspark从databricks连接到postgres数据库,我可以读取,我可以创建表,也可以更新它。但是我无法删除记录。
dfs = spark.read.format('jdbc')
.option("url", jdbcUrl)
.option("user", user)
.option("password", password)
.option("query", "DELETE FROM meta.test4 WHERE Emp_Id = 1")
.load()
这里的代码段会导致语法错误org.postgresql.util.PSQLException: ERROR: syntax error at or near "FROM"
如何在postgres中删除记录?
spark.read
仅用于读取数据。在内部,它将查询包装在SELECT * FROM (<query>)
中,因此您的语句实际上变成:
SELECT * FROM (DELETE FROM meta.test4 WHERE Emp_Id = 1)
,这显然会导致语法错误。
如果您想对远程数据库运行DML/DDL操作,您需要使用JDBC的Connection
和Statement
类显式连接并运行语句。本教程提供了一个很好的概述。