hana数据库连接mysql_如何连接HANA数据库读取表数据
1, 取保SAP系统与HANA 数据库服务器网络连接
在SE38中运行report RSBDCOS0,ping一下HANA database,确保没有丢包现象发生。
也可以通过tcode:OS01来ping hana database服务器。
2, 在SAP ABAP系统中创建HANA数据库链接
使用TCode: DBCO创建ABAP系统到hana数据库的链接,这步有点类似SM59。
在connection info字段中,输入HANA服务器的hostname或者是IP地址,格式如下,
Hostname:315
其中,315 是端口, 是 HANA的instance号。
DBCO创建完毕后,通过报表ADBC_TEST_CONNECTION来检查是否创建成功,
输入DB connection名字HDB(上图创建的),运行,连接成功会提示,successfully opened。
除了用报表ADBC_TEST_CONNECTION还可以用tcode:DBACOCKPIT来检查HANA数据库连接。
3, ABAP程序实现
创建完SAP abap系统和HANA数据库的连接后,就可以通过abap程序来读取hana数据库中的数据了,
这主要是通过类CL_SQL_CONNECTION,CL_SQL_STATEMENT,CL_SQL_RESULT_SET来实现的。
完整代码:
ABAP
REPORT ztest_hana_connection.
TYPE-POOLS:adbc.
DATA lv_sql TYPE string.
DATA lv_from TYPE string.
DATA lv_where TYPE string.
DATA lv_where2 TYPE string.
DATA lv_where3 TYPE string.
DATA : v_rows TYPE i.
DATA : lt_meta TYPE adbc_rs_metadata_descr_tab,
lt_column TYPE adbc_column_tab,
ls_meta LIKE LINE OF lt_meta,
ls_column LIKE LINE OF lt_column.
*Define variables for the connection
DATA: lr_dbconn TYPE REF TO cl_sql_connection,
lv_con TYPE dbcon_name VALUE 'HDB',
lr_sql_env TYPE REF TO cl_sql_statement,
lr_sql_result TYPE REF TO cl_sql_result_set,
lr_sql_exc TYPE REF TO cx_sql_exception, "#EC NEEDED
lr_par_exc TYPE REF TO cx_parameter_invalid, "#EC NEEDED
dref TYPE REF TO data,
tab_ref TYPE REF TO data,
gt_components TYPE cl_abap_structdescr=>component_table,
gs_components LIKE LINE OF gt_components.
FIELD-SYMBOLS :
TYPE any.
*Get connection
lr_dbconn = cl_sql_connection=>get_connection( con_name = lv_con ).
CREATE OBJECT lr_sql_env
EXPORTING
con_ref = lr_dbconn.
* SQL statment
lv_sql = 'SELECT * FROM ZLYTEST01'.
* excute SQL
lr_sql_result = lr_sql_env->execute_query( lv_sql ).
* get SQL resule set
lt_meta = lr_sql_result->get_metadata( ).
LOOP AT lt_meta INTO ls_meta.
ls_column = ls_meta-column_name.
APPEND ls_column TO lt_column.
gs_components-name = ls_meta-column_name.
gs_components-type ?= cl_abap_datadescr=>describe_by_data( p_data = ls_meta-data_type ).
APPEND gs_components TO gt_components.
ENDLOOP.
DATA lr_tabledescr TYPE REF TO cl_abap_tabledescr.
lr_tabledescr = cl_abap_tabledescr=>create(
p_line_type = cl_abap_structdescr=>create( p_components = gt_components ) ).
CREATE DATA tab_ref TYPE HANDLE lr_tabledescr.
* get REFERENCE OF LT_DATA INTO tab_ref.
lr_sql_result->set_param_table(
EXPORTING
itab_ref = tab_ref " Reference to Output Variable
corresponding_fields = lt_column ).
**Execute the query
lr_sql_result->next_package( ).
v_rows = lr_sql_result->next( ).
ASSIGN tab_ref->* TO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
REPORTztest_hana_connection.
TYPE-POOLS:adbc.
DATAlv_sqlTYPEstring.
DATAlv_fromTYPEstring.
DATAlv_whereTYPEstring.
DATAlv_where2TYPEstring.
DATAlv_where3TYPEstring.
DATA:v_rowsTYPEi.
DATA:lt_metaTYPEadbc_rs_metadata_descr_tab,
lt_columnTYPEadbc_column_tab,
ls_metaLIKELINEOFlt_meta,
ls_columnLIKELINEOFlt_column.
*Define variables for the connection
DATA:lr_dbconnTYPEREF TOcl_sql_connection,
lv_conTYPEdbcon_nameVALUE'HDB',
lr_sql_envTYPEREF TOcl_sql_statement,
lr_sql_resultTYPEREF TOcl_sql_result_set,
lr_sql_excTYPEREF TOcx_sql_exception,"#EC NEEDED
lr_par_excTYPEREF TOcx_parameter_invalid,"#EC NEEDED
drefTYPEREF TO data,
tab_refTYPEREF TO data,
gt_componentsTYPEcl_abap_structdescr=>component_table,
gs_componentsLIKELINEOFgt_components.
FIELD-SYMBOLS:
TYPEany.
*Get connection
lr_dbconn=cl_sql_connection=>get_connection(con_name=lv_con).
CREATE OBJECTlr_sql_env
EXPORTING
con_ref=lr_dbconn.
* SQL statment
lv_sql='SELECT * FROM ZLYTEST01'.
* excute SQL
lr_sql_result=lr_sql_env->execute_query(lv_sql).
* get SQL resule set
lt_meta=lr_sql_result->get_metadata().
LOOP ATlt_metaINTOls_meta.
ls_column=ls_meta-column_name.
APPENDls_columnTOlt_column.
gs_components-name=ls_meta-column_name.
gs_components-type?=cl_abap_datadescr=>describe_by_data(p_data=ls_meta-data_type).
APPENDgs_componentsTOgt_components.
ENDLOOP.
DATAlr_tabledescrTYPEREF TOcl_abap_tabledescr.
lr_tabledescr=cl_abap_tabledescr=>create(
p_line_type=cl_abap_structdescr=>create(p_components=gt_components)).
CREATE DATAtab_refTYPEHANDLElr_tabledescr.
* get REFERENCE OF LT_DATA INTO tab_ref.
lr_sql_result->set_param_table(
EXPORTING
itab_ref=tab_ref" Reference to Output Variable
corresponding_fields=lt_column).
**Execute the query
lr_sql_result->next_package().
v_rows=lr_sql_result->next().
ASSIGNtab_ref->*TO
以上。
hana数据库连接mysql_如何连接HANA数据库读取表数据相关推荐
- java连接Excel数据库读取,写入,操纵Excel表格
java连接Excel数据库读取,写入,操纵Excel表格 (2009-11-15 14:21:03) 转载 标签: java excel 连接 杂谈 分类:技术文档 java连接MicroSoft ...
- Python从数据库读取大量数据批量写入文件的方法
今天小编就为大家分享一篇Python从数据库读取大量数据批量写入文件的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将 ...
- python批量读取文件内容_Python从数据库读取大量数据批量写入文件的方法
使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将数据加载进内存,这时我们需要将数据进行预处理,分批次加载进内存. 下面是代码作用是将数据从数据库读取出来分批次写入txt文本文件,方便我们做 ...
- python Django 连接mysql数据库创建表详细全过程
python Django 连接mysql数据库创建表详细全过程 1,在数据库中新建一个要连接的数据库(在cmd命令行里登录数据库进行创建创建) mysql -u root -p**+密码** cre ...
- python读取数据库数据、并保存为docx_Python从数据库读取大量数据批量写入文件的方法...
Python从数据库读取大量数据批量写入文件的方法 使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将数据加载进内存,这时我们需要将数据进行预处理,分批次加载进内存. 下面是代码作用是将数据 ...
- php 查看mysql连接数据库_php基础之连接mysql数据库和查询数据
php基础之连接mysql数据库和查询数据 文章主要介绍了php连接mysql数据库和查询数据的方法和示例,需要的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕 ...
- php显示mysql数据实例_php 连接mysql数据库并显示数据 实例 转载 aoguren
PHP连接MySQL数据库并显示数据//---------基本设定---------$mysql_server_name = "localhost";//服务器名称:$mysql_ ...
- 易语言数据库读取相关数据
本课用的命令 读() 取记录号 () 取记录数() 到首记录 () 到尾记录 () 打开() 关闭() 跳过() 跳到() 本课实现功能 读,上一条,下一条,读首记录,读尾记录,读所有记录 视频链接: ...
- oracle数据库迁移部分表,oracle 数据库之间 表数据的 迁移
主要是 需要将 正式环境的数据库 和测试环境的数据库的 表 数据同步一下,方便测试. 这样的效果, 可以使用 数据库的 备份 , exp imp 等其他的方式, 可是这样的方式, 需要 在 电脑里面 ...
最新文章
- 在cuDNN中简化Tensor Ops
- 为了我心中的女神,我竟然转行做了程序员
- 常见采集脑电信号的四种技术
- optee的栈指针和栈内存的介绍
- Openwrt中luci配置页面cbi小记
- Dev-DXperience12.2版的新产品介绍:DXTREME
- 用类来实现输入输出时间,定义多个类对象分别输入输出各对象的时间(时:分:秒),使用函数,数据成员不再由键盘输入,而在调用函数时由实参给出,并在函数中使用默认参数
- 信息学奥赛一本通(1215:迷宫)
- v-if、v-for、v-model、v-on
- C++第三方库管理工具vcpkg使用教程
- 仿金蝶电商ERP进销存系统多仓库版
- PID参数整定具体方法-圆周倒立摆
- 中职计算机组装与维护实训教案,《计算机组装与维护》——计算机组装与维修的基础知识教学教案(中职教育)...
- 计算机怎么接入外接键盘,如何在笔记本电脑上设置外接键盘? [详细信息]
- 旋律生成算法的现状与挑战
- 【学习点滴】游戏后台开发-tx
- matlab 线性拟合polyfit_Matlab实现线性回归(直线拟合)
- MC皮肤站和外置登陆教程
- 励志情感类视频剪辑需要如何制作?
- mui 屏蔽手机物理返回按键(安卓+苹果)
热门文章
- javascript获得元素的尺寸和位置一 : offsetTop/Left、offsetWidth/Height、offsetParent
- 【深度学习】通俗理解什么是CNN卷积神经网络
- Vue-基本语法和系统指令
- MTCNN人脸检测(python实现)
- MED(median-edge detector)
- matlab怎么定义矩阵函数,MATLAB数组的常用函数
- C/C++时间函数的使用
- python实现胶囊网络_胶囊网络(Capsule Network)的TensorFlow实现
- 领导暴怒发言:技术就是古代的叫花子,贱命一条!
- android 华为推送sd卡,华为推送通道集成指南