千家信息网

0020-使用JDBC向Kudu表插入中文字符-双引号的秘密

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。1.问题描述使用Impala JDBC向Kudu表中插入中文字符,插入的中文字符串乱码,中文字符串被截断。2.问题复现测试环境:CDH5.
千家信息网最后更新 2025年01月23日0020-使用JDBC向Kudu表插入中文字符-双引号的秘密

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

1.问题描述

使用Impala JDBC向Kudu表中插入中文字符,插入的中文字符串乱码,中文字符串被截断。

2.问题复现

测试环境:

  • CDH5.12.0
  • Kudu1.4.0
  • ImpalaJDBC41_2.5.35

1.使用ImpalaJDBC代码进行测试,测试代码

static String 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; ResultSet rs = null; PreparedStatement ps = null;    try {        Class.forName(JDBC_DRIVER); con = DriverManager.getConnection(CONNECTION_URL); String insertsql = "insertinto my_first_table values(46, '测试中文字符')"; ps = con.prepareStatement(insertsql); ps.execute(); ps.close(); ps = con.prepareStatement("select* from my_first_table order by id asc"); rs = ps.executeQuery();        while (rs.next()) {            System.out.println(rs.getLong(1) + "\t" +rs.getString(2)); }    } catch (Exception e) {        e.printStackTrace(); } finally { try { // 关闭rs、ps和con rs.close(); ps.close(); con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }    }}

2.向Kudu表中分别插入测试数据,如"测试","测试中文","测试中文字符"

String insertsql = "insert into my_first_table values(44, '测试')";String insertsql = "insert into my_first_table values(45, '测试中文')";String insertsql = "insert into my_first_table values(46, '测试中文字符')";

如下是按测试顺序插入的数据

通过以上操作重现问题。

3.解决方法

修改程序中插入语句,将插入字符串的单引号修改为双引号

String insertsql = "insert into my_first_table values(51, \"测试中文字符\")";
String insertsql = "insert into my_first_table values(52, \"测试中文\")";
String insertsql = "insert into my_first_table values(53, \"测试\")";

修改后重新向Kudu中插入测试数据:"测试中文字符","测试中文","测试"

使用Hue查询显示如下:

中文字符串插入Kudu显示正常。

4.备注

1.使用Cloudera官网最新的JDBC驱动,插入中文字符时也有上述问题

下载地址:https://downloads.cloudera.com/connectors/impala\_jdbc\_2.5.38.1058.zip

2.通过Impala-shell插入中文字符串正常

[172.31.10.118:21000] > insert into my_first_table values(66,'插入中文字符');Modified 1 row(s), 0 row error(s) in 0.11s[172.31.10.118:21000] > select * from my_first_table where id=66;+----+--------------+| id | name         |+----+--------------+| 66 | 插入中文字符 |+----+--------------+Fetched 1 row(s) in 0.21s[172.31.10.118:21000] >[172.31.10.118:21000] > insert into my_first_table values(77, "测试中文字符");Modified 1 row(s), 0 row error(s) in 0.11s[172.31.10.118:21000] > select * from my_first_table where id=77;+----+--------------+| id | name         |+----+--------------+| 77 | 测试中文字符 |+----+--------------+Fetched 1 row(s) in 0.18s[172.31.10.118:21000] > 

醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

欢迎关注Hadoop实操,第一时间,分享更多Hadoop干货,喜欢请关注分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

测试 中文 字符 字符串 数据 问题 引号 温馨 代码 图片 手机 高清 无码 提示 乱码 公众 原创文章 地址 备注 少年 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 电脑方舟怎么快速搜服务器 长沙星诺网络技术 服务器买好了怎么用视频教程 南京春庭网络技术 廉江市网络安全监察部 域中管理服务器 华为服务器的认证培训 茂名无限软件开发代理价格 新洲区国际网络安全维护怎么样 杭州岚森网络技术有限公司 DNF黑白网络安全教育 oracle数据库的调优 广东广电网络安全播出总结 医药数据库营销 上海hp服务器续保调试 fifa12数据库 数据库中的组件和事务 湖北运营软件开发条件 崇明区个人数据库厂家报价 徐州老师发卡通里面的网络安全手抄报怎样画 ai硬件系统包括服务器吗 厦门昊铭网络技术有限公司 上蔡县网络安全进校园 网络安全实验室注入关攻略 避免重复侵入和网络安全 荒野乱斗怎么转服务器 天津互联网软件开发计划 服务器内数据库启动失败 mr内容是用哪个软件开发的 陕西网络安全非标机箱上哪找
0