在使用spark session进行写入之前,如何在启用session set命令的情况下将Dataframe结果写入teradata

nle07wnf  于 2021-05-17  发布在  Spark
关注(0)|答案(1)|浏览(411)

我的数据有特殊字符(比如笑脸字符,一些垃圾字符)。我想按原样将数据插入terdata表。我可以看到hive以utf-8格式存储数据。teradata sparkDataframe写入失败并出现错误
错误6705翻译过程中遇到非法格式的字符串
为了解决这个问题,我遵循了以下流程
使用drivermanager和connection createstatement编写自定义scala代码。
jdbc连接字符串=jdbc:teradata用法:/connection/database=dbname,charset=utf-8,column\u name=on,maybenull=on
在写入实际数据之前,启用会话命令-
设置会话字符集unicode传递
会话命令执行成功后,将实际数据写入teradata表。
但我想看看,在将Dataframe数据写入teradata表之前,是否有可能启用会话级命令。
我可以在dataframe option方法中使用会话级set语句吗?喜欢
table_df.write.format(“jdbc”).option(“url”,jdbcurl”).option(“dbtable”,tablename).option(“dbname”,dbname).option(“username”,user).option(“password”,password)
请提供您对此的看法。谢谢您

pxyaymoc

pxyaymoc1#

您可以指定teradata jdbc驱动程序的 RUNSTARTUP=ON 连接参数并指定 SET SESSION CHARACTER SET UNICODE PASS THROUGH ON 在数据库用户的 STARTUP 条款。
有关详细信息,请参阅teradata jdbc驱动程序用户指南,标题为“用户启动sql请求:
https://teradata-docs.s3.amazonaws.com/doc/connectivity/jdbc/reference/current/jdbcug_chapter_2.html#bgbhbdab

相关问题