gpt4 book ai didi

postgresql - Spark 不尊重表的大小写敏感性

转载 作者:行者123 更新时间:2023-11-29 11:31:19 28 4
gpt4 key购买 nike

我在 spark scala 中遇到区分大小写的问题。我想从一个包含一些字符(大写)的 postgres 表中读取,但默认情况下 spark 将名称转换为小写,我收到错误

org.postgresql.util.PSQLException: ERROR: relation "textlogs" does not exist

val opts = Map(
"url" -> "jdbc:postgresql://localhost:5433/sparkdb",
"dbtable" -> "TextLogs",
"user" -> "admin",
"password" -> "mypassword"
)
val df = spark
.read
.format("jdbc")
.options(opts)
.load

有没有办法强制 spark 区分大小写?

最佳答案

在 Postgres 中,当您不对对象标识符(如表名)进行双引号时,它们将被视为不区分大小写。所以这个TextLogs实际上等于textlogs

为了拥有区分大小写的对象标识符,您需要将其用双引号引起来。在您的情况下,这将是 "TextLogs",因此在您的代码中,您应该只向表名添加转义双引号:

val opts = Map(
"url" -> "jdbc:postgresql://localhost:5433/sparkdb",
"dbtable" -> "\"TextLogs\"",
"user" -> "admin",
"password" -> "mypassword"
)
val df = spark
.read
.format("jdbc")
.options(opts)
.load

关于postgresql - Spark 不尊重表的大小写敏感性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48462195/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com