我的数据有特殊字符(比如笑脸字符,一些垃圾字符)。我想按原样将数据插入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)
请提供您对此的看法。谢谢您
1条答案
按热度按时间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