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

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和conrs.close();ps.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.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实操

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

  1. mysql向表中插中文显示,针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决jav...

    针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决jav 针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决:java.sql.SQLException: Incorrect ...

  2. MySQL不能插入中文字符及中文字符乱码问题

    MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8. 在安装后MySQL之后,它的配置文件不是很给力,不知道你们的是不是,反正我的是! 开始插入中 ...

  3. centos 7 mysql 中文,解决centOS7 下mysql插入中文字符报错相关问题

    解决centOS7 下mysql插入中文字符报错相关问题 在刚装完mysql,就建立了数据库abc,然后新建一个abc表,插入英文没有问题,但是插入中文就有问题,会报错: ERROR 1366 (HY ...

  4. MySQL插入中文字符

    初次使用MySQL我们可能会遇到不能向表中插入中文字符的情况: 这时我们需要在建表的时候将表格的字符编码集改为UTF-8,只需在创建表格的语句最后加上更改字符编码集的语句:ENGINE=InnoDB ...

  5. myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法)

    myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法) 参考文章: (1)myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法) (2)https://www. ...

  6. 解决稻香老农无组件上传类在文件上传时当文件名中含中文单双引号取不到正确的文件名的方案

    今天完成了对稻香老农的最新版本无组件上传类V2.1的修改. 解决了文件上传时当文件名中含中文单双引号取不到正确的文件名的问题. 参考了无惧上传类,在此感谢稻香老农和梁无惧两位老师,谢谢他们无偿的奉献了 ...

  7. phpstudy命令行中数据表插入中文显示不了的问题

    在PHPstudy环境下,做MySQL操作,往数据表里面插入数据的时候,如果是中文的数据就会显示不了或者是问号?. 这个问题搞了我一晚上了,终于知道问题所在. 下载的PHPstudy的MySQL数据库 ...

  8. DB2插入单引号 双引号的问题

    1. 如果是单引号, 则出现下面的错误: db2 insert into sales(region) values(''') DB21034E 该命令被当作 SQL 语句来处理,因为它不是有效的&qu ...

  9. Navicate 里查询的表名必须带双引号问题,已解决

    哈喽!我是泡泡!又在写代码的路上发现了新知识! 问题描述 以前不经常用navicate,我用navicate写sql的时候发现有的表必须要带上一对双引号才能执行,否则执行就会一直报错,但是有的表就不用 ...

最新文章

  1. FAST-CGI安装与使用
  2. Compiere去掉启动时的下面显示的进度条
  3. 成为JavaGC专家(1)—深入浅出Java垃圾回收机制
  4. MALTLAB 求出水仙花数
  5. https的那些事儿
  6. Hibernate save, saveOrUpdate, persist, merge, update 区别
  7. [UE4]使用蓝图关闭对象的碰撞SetActorEnableCollision
  8. 从OpenFOAM的源码中查找信息
  9. 产品经理,讲究的是说学逗唱。
  10. Windows端口占用情况?
  11. 冷热分离和直接使用大数据库_「系统架构」如何通过分离冷热数据提升系统性能?...
  12. avrdude: stk500_getsync(): not in sync: resp=0x00
  13. justinmind夜话:程序员眼中的原型设计视频教程之书到用时方恨少
  14. TruckSim Quick Start Guide(TruckSim快速入门)
  15. 中国移动“梧桐杯”大数据应用创新大赛智慧金融初赛TOP1开源
  16. 运营之光:我的互联网运营方法论与自白学习总结(思维导图)
  17. vue项目中如何设置ico图标
  18. Mac使用命令行工具解压和压缩rar文件
  19. ENVI打开Landsat 8 C2 数据
  20. 线上服务器突然崩了!?Jenkins 服务器中挖坑病毒解决方案

热门文章

  1. 【开发者笔记】java 利用jna调用c#的dll
  2. 7-9 集合相似度 (25 分)(交集/并集)
  3. 打印图形 字母倒三角
  4. php curl密码控件,检索通过curl传递的用户名,密码参数 - php
  5. String s = new String(“hello“)创建了几个对象(图解)
  6. C语言------实现抢21根火柴的小游戏
  7. 计算机网络在智能建筑的发展,智能建筑的发展历史和趋势
  8. Linux安装中文字体_宋体
  9. 弹性盒模型----容器属性
  10. Atitit 硬件 软件 的开源工作 差异对比