0020-使用JDBC向Kudu表插入中文字符-双引号的秘密
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。1.问题描述使用Impala JDBC向Kudu表中插入中文字符,插入的中文字符串乱码,中文字符串被截断。2.问题复现测试环境:CDH5.
千家信息网最后更新 2024年11月24日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安全错误
数据库的锁怎样保障安全
系统软件开发的关键
关于网络安全的综合活动
如何登录ftp服务器
三级网络技术是题库抽原题
电力网络安全厂家排名
个人隐私网络安全
台州直销软件开发执行标准
幼儿园加强网络安全管理
杭州软件开发平台哪家服务好
网络安全检测类型
分布式数据库逻辑结构和数据特性
服务器硬盘发热测试
影之刃无法连接服务器
乐视电视服务器主机名
dnf服务器忘了怎么办
db2查看数据库快照
www表示的是wed服务器吗
软件开发相关岗位职责
手机网络安全培训ppt
ROS软件开发工程师初级
mysql 服务器 管理
网络技术与英语高效课堂
软件开发跟人工智能
网络技术应用人才
互联网智慧科技公司
西城区管理软件开发包括什么
通信技术网络技术
浙江农信软件开发面经
软件开发人员类型
git搭建开发服务器