sparkjdbc中的oracle编码选项

yhuiod9q  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(748)

我想使用sparkjdbc从oracledb读取特定字符集编码的数据,比如 us-ascii 但我不能。
我按照这个答案尝试的代码:

val res=spark.read.format("jdbc")
  .option("url", url)
  .option("user", "userid")
  .option("password", "pwd")
  .option("driver","oracle.jdbc.OracleDriver")
  .option("encoding", "us-ascii")
  .option("characterEncoding", "us-ascii")
  .option("query", tableQuery).option("fetchsize","10000")
  .load()

它总是返回 utf-8 编码。
有办法做到这一点吗?

62o28rlo

62o28rlo1#

根据oracledocs,“jdbc驱动程序透明地执行所有字符集转换。转换不需要用户干预”。
oracle jdbc驱动程序似乎不支持连接参数characterencoding或encoding。
为了更好地理解问题,您可以尝试以下步骤
验证编码与spark一起工作-将数据提取到具有相同编码的分隔文件中,并通过提供编码详细信息读取文件,然后显示Dataframe
确保在oracle数据库中使用正确的编码—oracle jdbc驱动程序用于执行java应用程序的字符集转换,以依赖于数据库使用的字符集,并且等效的oracle字符集名称为us7ascii。

相关问题