小小狠招:巧妙使用HANA数据库的jdbc driver

SAP旗下的HANA数据库,实际上是分为两个系列进行发布,一种是基于本地部署的称之为HANA Platform。另一种是面向Cloud平台的,称之为HANA Cloud。

在实际使用当用,因为两者基本上共用同一代码库,除个别地方略有差异以外,我们可以共用它们的JDBC driver。

本文就简要介绍一下这个driver的几个非常有用的小技巧,你会感觉到,普普通通的jdbc驱动,也能做很多事情。

实例

获取hana cloud jdbc driver:

我们从:https://mvnrepository.com/artifact/com.sap.cloud.db.jdbc/ngdbc可以得到较新版本的hana JDBC。

也能看到包的定义:

<!-- https://mvnrepository.com/artifact/com.sap.cloud.db.jdbc/ngdbc -->
<dependency><groupId>com.sap.cloud.db.jdbc</groupId><artifactId>ngdbc</artifactId><version>2.20.11</version><type>pom</type>
</dependency>

顺着里边的说明,也可以看到:对应的帮助文档:

https://help.sap.com/docs/SAP_HANA_CLIENT/f1b440ded6144a54ada97ff95dac7adf/434e2962074540e18c802fd478de86d6.html

我们使用单个命令行,就可以下载得到该文件:

mvn dependency:get -DgroupId=com.sap.cloud.db.jdbc -DartifactId=ngdbc -Dversion=2.20.11 -Dtransitive=false
mvn dependency:copy -Dartifact=com.sap.cloud.db.jdbc:ngdbc:2.20.11 -DoutputDirectory=./

第一个命令会下载驱动到你的repository的相关子目录当中。第二个命令会将对应的文件重新复制到你指定的目录:-DoutputDirectory=./  最终会得到文件: ngdbc-2.20.11.jar

当然,你也可以直接从SAP官网上下载相应的完整的client包,它里边也包含有完整的JDBC驱动。

当作命令行连接HANA

java -jar ngdbc-2.20.11.jar -u SYSTEM,<password> -n <ip_address>:30215 -c "SELECT DATABASE_NAME,version FROM SYS.M_DATABASES" -w 50
| DATABASE_NAME                                      | VERSION                          |
-----------------------------------------------------------------------------------------
| HDB                                                | 2.00.070.00.1679989823           |
1 rows.
实例2: 查询数据库服务器上所有安装版本历史:
java -jar ngdbc-2.20.11.jar -u SYSTEM,<password> -n <ip_address>:30215 -c "SELECT * FROM SYS.M_DATABASE_HISTORY"| INSTALL_TIME                | VERSION                          |
------------------------------------------------------------------
| 2017-01-17 09:38:19.0000000 | 1.00.112.04.1467296086           |
| 2017-04-19 09:20:18.0000000 | 2.00.002.00.1490188421           |
| 2017-06-12 09:19:44.0000000 | 2.00.011.00.1493936640           |
| 2017-07-07 10:34:05.0000000 | 2.00.012.00.1498457145           |
| 2018-07-16 09:40:12.0000000 | 2.00.031.00.1528768600           |
| 2018-09-24 05:50:11.0000000 | 2.00.032.00.1533114046           |
| 2019-02-05 04:43:35.0000000 | 2.00.036.00.1547699771           |
| 2019-09-20 03:32:26.0000000 | 2.00.042.00.1564994110           |
| 2020-02-13 12:02:42.0000000 | 2.00.044.00.1571081837           |
| 2020-05-06 14:04:11.0000000 | 2.00.047.00.1586595995           |
| 2020-10-06 06:01:18.0000000 | 2.00.052.00.1599235305           |
| 2021-01-18 06:15:01.0000000 | 2.00.053.00.1605092543           |
| 2021-02-05 09:46:59.0000000 | 2.00.054.00.1611906357           |
| 2021-05-19 10:25:57.0000000 | 2.00.055.00.1615413201           |
| 2021-09-10 02:38:40.0000000 | 2.00.057.00.1629894416           |
| 2021-10-18 10:39:57.0000000 | 2.00.058.00.1634122452           |
| 2021-11-22 03:29:50.0000000 | 2.00.059.00.1636704142           |
| 2022-02-16 11:20:29.0000000 | 2.00.061.00.1644229038           |
| 2022-05-24 06:05:26.0000000 | 2.00.062.00.1650891137           |
| 2022-10-12 03:49:19.0000000 | 2.00.064.00.1660047502           |
| 2022-11-23 04:35:13.0000000 | 2.00.065.00.1665753120           |
| 2023-01-27 05:55:29.0000000 | 2.00.066.00.1671096120           |
| 2023-05-18 06:08:25.0000000 | 2.00.070.00.1679989823           |

你只要在 -c 后边传入相应的命令行即可。有意思吧。这也算是一个简单的命令行客户端了。

最简单的,你可以直接针对jar不带任何参数,它会输出当前的时间戳(来自服务器的时间)。

java -jar ngdbc-2.20.11.jar -u SYSTEM,<password> -n <ip_address>:30215
| CURRENT_TIMESTAMP           |
-------------------------------
| 2024-03-28 21:08:48.0890000 |

完整的命令行格式是这样的:

java -jar ngdbc.jar -u <user,password>[-n <hostname:port>][-i <instance-number>][-d <database-name>][-o <connect-option>][-w <maximum-column-width>[-c <sql-command>]

一些重要的开关

其实,这里主要是强调:JDBC Tracing and Trace Options的用法。在你实际开发应用过程当中,添加适当的开关,能帮你快速定位问题。

1、直接在jdbc连接串中设置
jdbc:sap://localhost:30015/?autocommit=false&traceFile=traceFile.txt&traceOptions=CONNECTIONS,API,PACKET,TIMESTAMPS,ELAPSEDTIMES,FAILURE_ACTION_STDERR

这里就设置了很多跟踪选项:CONNECTIONS,API,PACKET,TIMESTAMPS,ELAPSEDTIMES,FAILURE_ACTION_STDERR

2、在命令行里头直接设置
  • 获取当前配置项

java -jar ngdbc-2.20.11.jar SHOWDriver version                               : 2.20.11-354e45de0dcbabd02f58c506ecf1138161ee4b1eSettings file name                           : ~/.sdb/jdbctracesettings.iniShared memory file name                      : ~/.sdb/jdbctrace.shmConfigurationTrace                                        : DisabledTrace file name                              : jdbctrace.prtTRACE CONNECTIONS                            : OnTRACE API                                    : OnTRACE PACKET                                 : OnTRACE DISTRIBUTION                           : OffTRACE STATISTICS                             : OffTRACE CLEANERS                               : OnTRACE DEBUG                                  : OffShow plain-text client-side encrypted values : DisabledShow timestamps                              : DisabledShow elapsed times                           : DisabledTrace file size                              : UnlimitedStop on error                                : DisabledTrace failure action                         : IgnorePerformance trace                            : DisabledPerformance trace file name                  : jdbcperformancetrace.prt
  • 直接设置选项举例

java -jar ngdbc-2.20.11.jar TRACE ON
//Driver version                               : 2.20.11-354e45de0dcbabd02f58c506ecf1138161ee4b1eSettings file name                           : /Users/i062873/.sdb/jdbctracesettings.iniShared memory file name                      : /Users/i062873/.sdb/jdbctrace.shmConfigurationTrace                                        : EnabledTrace file name                              : jdbctrace.prtTRACE CONNECTIONS                            : OnTRACE API                                    : OnTRACE PACKET                                 : OnTRACE DISTRIBUTION                           : OffTRACE STATISTICS                             : OffTRACE CLEANERS                               : OnTRACE DEBUG                                  : OffShow plain-text client-side encrypted values : DisabledShow timestamps                              : DisabledShow elapsed times                           : DisabledTrace file size                              : UnlimitedStop on error                                : DisabledTrace failure action                         : IgnorePerformance trace                            : DisabledPerformance trace file name                  : jdbcperformancetrace.prt

这样我样可以在相同路径下边的jdbctrace*.prt文件里头得到trace的内容:

    <Part PartKind=ResultSetID(13) PartAttributes=0(none) ArgumentCount=1 BigArgumentCount=0 BufferLength=8 BufferSize=29816><PartBuffer>0 | b5 97 c0 10 65 72 05 00                         | ....er..         |</PartBuffer></Part><Part PartKind=StatementContext(39) PartAttributes=0(none) ArgumentCount=4 BigArgumentCount=0 BufferLength=206 BufferSize=29792><PartBuffer>0 | 01 21 ac 00 01 00 00 00 00 00 00 00 68 17 c6 05 | .!..........h... |10 | 00 00 00 00 e2 46 b2 42 00 00 00 00 bc e5 53 3d | .....F.B......S= |20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |30 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |50 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |70 | 00 00 00 00 00 00 00 00 00 00 00 00 00 15 13 02 | ................ |80 | e2 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |90 | 00 00 40 b0 01 00 00 00 00 00 00 00 00 00 00 00 | ..@............. |a0 | 00 00 00 00 76 80 34 5c 08 d7 24 00 9d 0a 96 ad | ....v.4\..$..... |b0 | 02 04 03 03 00 00 00 00 00 00 07 04 bd 01 00 00 | ................ |c0 | 00 00 00 00 08 04 20 bb 00 00 00 00 00 00       | ...... .......   |
.....

这些TRACE的内容非常有用。尤其是在遇到你认为是BUG的时候,可以将这些TRACE文件作为佐证,提供给SAP官方,便于他们去修复问题。

由于这是一个基于操作系统用户级的设置。当你设置完使用完之后,可以再将其恢复到原来的状态:

java -jar ngdbc-2.20.11.jar TRACE OFF
3、启动图形方式进行设置

既然有命令行方式,那同时也就有了GUI方式。我们用-g选项就可以启动。

java -jar ngdbc-2.20.11.jar -g

图片

image-20240329072459665

所有可以配置的参数项,一目了然。

1)有enable tracing的,下边可以指定trace文件,trace级别,以及时间戳大小,是否明文显示。

2)是否启用关于性能的tracing,这个对于测量性能指标也非常重要。

总结

一个小小的jdbc驱动,HANA数据库为它提供的功能还是比较强悍的。在关键的时候,能起到非常大的作用。如果只是一些非常简单的连接性需求,甚至不需要任何第三方工具,直接使用简单的命令行就可以顺利完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车载电子电器架构 —— 电气架构释放检查

车载电子电器架构 —— 电气架构释放检查 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

Sql注入---基础

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.Sql注入概述 攻击者通过构造恶意的SQL查询语句&#xff0c;将其注入到应用程序的数据库查询中&#xff0c;以执行未经授权的操作或者获取敏感信息。 假设如下场景&#xff0c;当你想要知道对…

【c++】简单的日期计算器

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好啊&#xff0c;在我们学习了默认成员函数后&#xff0c;我们本节内容来完成知识的实践&#xff0c;来实现一个简易的日期计算器 目录 头文件声明函数函数的实现1.全缺省默认构…

每日一博 - 关于日志记录的最佳实践

文章目录 概述选择合适的日志等级打印函数的入参、出参打印日志对象要做判空处理&#xff0c;避免阻断流程推荐使用 Slf4j不用e.printStackTrace()打印日志低级别的日志输出&#xff0c;必须进行日志级别开关判断不打印重复日志打印全部的异常信息&#xff0c;方便定位问题核心…

cocos2.x => node 属性修改

简介 与节点属性相关的几个核心变量_trs、_matrix、_worldMatrix、_localMatDirty、_worldMatDirty。 _trs&#xff1a;存储节点的position、rotation、scale _matrix&#xff1a;存储节点的缩放、位移、旋转三者合一的变化矩陈&#xff08;仿射矩陈&#xff09; _worldMat…

6、Cocos Creator 2D 渲染组件(一)

目录 1、Sprite 组件 2、Label 组件 3、Mask 组件 4、Graphics 组件 5、RichText 组件 1、Sprite 组件 2、Label 组件 3、Mask 组件 4、Graphics 组件 5、RichText 组件 6、BlockInputEvents 组件 BlockInputEvents 组件将拦截所属节点 bounding box 内的所有输入事件&a…

python多方式操作elasticsearch介绍

python多方式操作elasticsearch介绍 1. requests模块操作ES ​ requests 是一个 Python HTTP 库&#xff0c;它简化了发送 HTTP 请求和处理响应的过程。通过 requests 模块&#xff0c;开发人员可以轻松地与 Web 服务进行通信&#xff0c;包括获取网页内容、执行 API 请求等。…

Java初级八股文面试题

1. Java的基本数据类型有哪些&#xff1f; 答&#xff1a;Java的基本数据类型包括&#xff1a; 整型&#xff1a;byte, short, int, long浮点型&#xff1a;float, double字符型&#xff1a;char布尔型&#xff1a;boolean 2. Java中的变量作用域有哪些&#xff1f; 答&…

Qt for WebAssembly 环境搭建 - Windows新手入门

Qt for WebAssembly 环境搭建 - Windows新手入门 一、所需工具软件1、安装Python2、安装Git2.1 注册Github账号2.2 下载安装Git2.2.1配置Git&#xff1a;2.2.2 配置Git环境2.2.3解决gitgithub.com: Permission denied (publickey) 3 安装em编译器 二、Qt配置编译器三、参考链接…

怎么让ChatGPT批量写作原创文章

随着人工智能技术的不断发展&#xff0c;自然语言处理模型在文本生成领域的应用也日益广泛。ChatGPT作为其中的佼佼者之一&#xff0c;凭借其强大的文本生成能力和智能对话特性&#xff0c;为用户提供了一种高效、便捷的批量产出内容的解决方案。以下将就ChatGPT批量写作内容进…

厦门攸信技术亮相新技术研讨会,展现物流自动化解决方案新高度!

今日&#xff0c;厦门攸信信息技术有限公司受邀参加了一场备受行业关注的电子制造高端盛会——一步步新技术研讨会&#xff0c;凭借卓越的智能制造与物流自动化技术在会议中大放异彩。作为一家引领行业发展的企业&#xff0c;厦门攸信技术不仅展示了其深厚的技术底蕴&#xff0…

算法系列--动态规划--背包问题(4)--完全背包拓展题目

&#x1f495;"这种低水平质量的攻击根本就不值得我躲&#xff01;"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–动态规划–背包问题(4)–完全背包拓展题目 大家好,今天为大家带来的是算法系列--动态规划--背包问题(4)--完全背包拓展题目…

计算机图形学和OpenGL

一.计算机图形学和OpenGL的推荐书籍&#xff1a; 1. **OpenGL编程指南&#xff08;第九版&#xff09;**&#xff08;OpenGL Programming Guide, Ninth Edition&#xff09;&#xff1a;这本书是学习OpenGL编程的经典教材&#xff0c;详细介绍了OpenGL的基础知识和高级技术&…

《web应用技术》第一次课后练习

上机任务&#xff08;利用好chatgpt&#xff0c;文心一言等工具。&#xff09;&#xff1a; 1、下载软件&#xff0c;并安装。相关安装文件已上传至群文件。 JDK,TOMCAT&#xff0c;IDEA 2、学会用记事本编写jsp文件&#xff0c;并放进tomcat的相关目录下&#xff0c;运行。 …

使用Windows自带服务(BitLocker)加密U盘

第一步&#xff1a;启用 BitLocker 服务 1.1快捷键&#xff1a;WinR 调出运行框&#xff0c;输入services.msc 1.2找到服务列表中的BitLocker Drive Encryption Service&#xff0c;启动此项 第二步&#xff1a;加密U盘 把你的U盘插入电脑&#xff0c;打开“我的电脑”&#…

EFCore的空迁移(EFCore操作已存在的数据库表,不影响其中的数据)

背景&#xff1a;EFCore默认的会自动创建数据表&#xff0c;但是有时又是DBFirst&#xff0c;数据库写好了要用现成的表。这个时候就需要进行一些特殊的操作了 1、写出跟要对接数据库的实体类 比如我的表是这样创建的 create table mail_test (user_id bigint auto_increment …

java普通类和抽象类有哪些区别?

普通类和抽象类在面向对象编程中有一些显著的区别&#xff0c;这些区别主要体现在类的定义、使用方式和实例化等方面。以下是它们之间的一些主要区别&#xff1a; 定义与实现&#xff1a; 普通类&#xff1a;普通类可以包含非抽象方法和抽象方法&#xff08;如果有的话&#x…

OSCP靶场--Twiggy

OSCP靶场–Twiggy 考点(CVE-2020-11651[RCE]) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.216.62 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-30 06:43 EDT Nmap scan report for 192.168.216.62 Host i…

MongoDB聚合运算符:$ln

文章目录 MongoDB聚合运算符&#xff1a;$ln语法使用举例 MongoDB聚合运算符&#xff1a;$ln $ln聚合运算符计算数字的自然对数ln&#xff08;即 log e&#xff09;并将结果作为双精度值返回。 语法 { $ln: <number> }<number>表达式可以是任何有效的表达式&…

Hive常用函数_20个字符串处理

Hive常用函数_20个字符串处理 以下是Hive中常用的字符串处理函数&#xff0c;可用于执行各种字符串处理转换操作。 1. CONCAT()&#xff1a;将多个字符串连接在一起。 SELECT CONCAT(Hello, World); -- Output: HelloWorld2. SUBSTR()&#xff1a;从字符串中提取子字符串&…