解决sparkSQL向MySQL写数据时的中文编码问题,java.sql.SQLException: Incorrect string value: ‘\xE5\x8D\x8E\x

本文介绍如何解决SparkSQL向MySQL写入中文数据时出现的乱码问题。通过设置MySQL字段编码为UTF8,并在SparkSQL连接URL中加入相应的编码参数,实现正确写入。

关于sparkSQL向MySQL写数据,网上已经有很多代码了。我所保存的数据中含有中文,因此编码存在问题,数据导入成功,但是乱码。本篇文章主要记录较简洁的一种解决办法。
先展示下错误数据:
中文乱码
解决办法:

  1. 首先在MySQL中创建一个table,注意字段要和所保存的字段一致
  2. 之后设置各个中文字段的编码格式。注意:是设置字段,如果只设置table的编码格式为UTF8,还是会失败。
  3. sparkSQL的代码的设置。

建表:

CREATE TABLE Top3Goods( 
  area varchar(30), 
  product_name varchar(30),
  total_clicks bigint,
  city_remarks varchar(50));
  #参数含义:旧字段名 第二个:新字段名
alter table Top3Goods change area area varchar(30) character set utf8;
alter table Top3Goods change product_name product_name varchar(30) character set utf8;
alter table Top3Goods change city_remarks city_remarks varchar(50) character set utf8;

sparkSQL的代码:在URL末尾加上UTF-8的编码设置
?useUnicode=true&characterEncoding=utf8
.mode(SaveMode.Append)模式表示追加。

 val frame: DataFrame = spark.sql<
这个错误是由于在MySQL存储表情出现编码问题导致的。根据引用,这个错误的解决方法可以参考以下步骤: 1. 首先,确认你的MySQL数据表的字符集和校对规则是否正确设置为支持存储表情的字符集,如utf8utf8mb4。 2. 确认你的应用程序连接MySQL数据使用了正确的字符编码设置,以确保数据的正确存储和检索。 3. 如果你的数据库表字段使用的是varchar类型,确保长度足够存储表情的字符数。 4. 如果你的应用程序使用的是JDBC连接数据库,可以在连接字符串中添加参数"useUnicode=true&characterEncoding=utf8"来指定字符编码。 5. 如果你已经确认以上步骤都正确设置,但仍然出现错误,可能是由于MySQL的版本不支持存储特定的表情字符。在这种情况下,可以考虑升级你的MySQL版本或使用其他存储表情的解决方案,如将表情字符转换为其它格式存储,如Base64编码等。 综上所述,通过正确设置MySQL字符集和校对规则,使用正确的字符编码,以及确保字段长度足够,你可以解决java.sql.SQLException: Incorrect string value报错。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQL存储表情报错:java.sql.SQLException: Incorrect string value:\xF0\x9F\x92\xA9\x0D\x0A…’的...](https://download.csdn.net/download/weixin_38685876/13703258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL报错:Cause: java.sql.SQLException: Incorrect string value:\xE6\x9D\x8E“,“...‘ for column...](https://blog.csdn.net/mythangelboy/article/details/130346981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值