0021-使用JDBC向Kudu表插入中文字符-cast的秘密
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。1.问题描述使用Impala JDBC向Kudu表中插入中文字符,插入的中文字符串乱码,中文字符串被截断。继之前文档使用sql拼接方式插入
千家信息网最后更新 2025年12月02日0021-使用JDBC向Kudu表插入中文字符-cast的秘密
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.问题描述
使用Impala JDBC向Kudu表中插入中文字符,插入的中文字符串乱码,中文字符串被截断。
继之前文档使用sql拼接方式插入中文字符串乱码解决方法后,此文档描述使用jdbc的PreparedStatement方式插入中文字符串乱码问题。
2.问题复现
测试环境:
- CDH5.12.0
- Kudu1.4.0
- ImpalaJDBC41_2.5.35
1.使用ImpalaJDBC代码进行测试,测试代码
staticString JDBC_DRIVER ="com.cloudera.impala.jdbc41.Driver";static String CONNECTION_URL ="jdbc:impala://ip-172-31-10-118:21050/default";public static void main(String[] args) { Connection con = null; ResultSetrs = null; PreparedStatementps = null; try { Class.forName(JDBC_DRIVER); con =DriverManager.getConnection(CONNECTION_URL); Stringsql2 = "insert into my_first_table values(?, ?)"; ps =con.prepareStatement(sql2); ps.setInt(1,81); ps.setString(2,"测试中文字符"); ps.execute(); ps.close(); ps =con.prepareStatement("select * from my_first_table order byid asc"); rs = ps.executeQuery(); while (rs.next()){ System.out.println(rs.getLong(1)+ "\t" +rs.getString(2)); } } catch (Exceptione) { e.printStackTrace(); } finally{ try {// 关闭rs、ps和con rs.close(); ps.close(); con.close(); } catch(SQLException e) { // TODOAuto-generated catch block e.printStackTrace(); } }}2.向Kudu表中分别插入测试数据,如"测试","测试中文","测试中文字符"
String sql2 = "insert into my_first_table values(?, ?)";ps = con.prepareStatement(sql2);ps.setInt(1, 73);ps.setString(2, "测试");ps.execute();ps.close();ps = con.prepareStatement(sql2);ps.setInt(1, 74);ps.setString(2, "测试中文");ps.execute();ps.close();ps = con.prepareStatement(sql2);ps.setInt(1, 75);ps.setString(2, "测试中文字符");ps.execute();ps.close();通过Hue查询结果如下:
中文字符全部乱码,部分乱码,字符串被截断问题重现。
3.解决方法
修改程序中插入语句,将插入字符串列使用cast函数转成String类型
String sql2 = "insert into my_first_table values(?, cast(?as string))";ps = con.prepareStatement(sql2);ps.setInt(1, 60);ps.setString(2, "测试中文字符");ps.execute();ps.close();ps = con.prepareStatement(sql2);ps.setInt(1, 61);ps.setString(2, "测试中文");ps.execute();ps.close();ps = con.prepareStatement(sql2);ps.setInt(1, 62);ps.setString(2, "测试");ps.execute();ps.close();修改后重新向Kudu中插入测试数据:"测试中文字符","测试中文","测试"
使用Hue查询显示如下:

中文字符串插入Kudu显示正常。
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
欢迎关注Hadoop实操,第一时间,分享更多Hadoop干货,喜欢请关注分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
测试
中文
字符
字符串
乱码
问题
数据
温馨
代码
图片
手机
方式
方法
高清
无码
提示
查询
串列
公众
函数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
信息站关于网络安全方面
数据库怎么存储语音
sql备份到另外一台服务器
软件开发社会健康安全法律因素
深圳指上网络技术有限公司
激活工具服务器打不开
网络安全公司需要备案吗
小学生网络安全教育主题班会课件
数据库安全性保护机制的是
WINAMP下载软件开发
工作站做java服务器
网络技术方面的杂志
瓜州师生网络安全
高一网络安全班会活动纪实
网络安全倡议书400
顺风网络技术
江苏星骏网络技术有限公司
数据库身份证什么类型
网络安全期刊审稿速度
帮我找个服务器再来
西电网络安全研究生怎么样
微信软件开发平台
大家熟悉的监控服务器
知网的数据库多久更新
上海客户管理软件开发
湖南时钟同步服务器云空间
数字媒体技术和网络安全
网络技术基础学习心得
网络安全法 是一部全面规范
德阳软件开发销售电话