千家信息网

0021-使用JDBC向Kudu表插入中文字符-cast的秘密

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。1.问题描述使用Impala JDBC向Kudu表中插入中文字符,插入的中文字符串乱码,中文字符串被截断。继之前文档使用sql拼接方式插入
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 中国互联网科技股 美国互联网科技巨头监管 善班互联网科技 万易互联网科技有限公司 沃里互联网科技 互联网科技公司介绍 居家互联网科技有限公司 哈尔滨秒房互联网科技有限公司 新华互联网科技2019 广州慧亚互联网科技怎么样 银川新华互联网科技职业技术培训学校图片 中化能源互联网科技招聘 江阴互联网智能科技产品进口 华夏恒生互联网科技013171 阿里互联网科技企业 卓翼科技产业互联网合作 伊宁互联网科技做什么的 郑州欣桑互联网科技有限公司 唐山双旺合互联网科技产业园 武汉亿视互联网科技有限公司 互联网科技工作委员会 蓝思科技飞鸽互联网 互联网科技工作委员会毛军 世界互联网领先科技成果 兼蜜互联网科技 居家互联网科技有限公司 工业互联网展湾科技股份有限公司 互联网科技圈年度人物 每天都有哪些好的互联网科技 互联网科技大会大佬
0