这个教程的前一篇文章,SAP HANA Cloud 学习教程之一: 如何在 SAP BTP 上创建 SAP HANA Cloud 实例,我们已经成功在 SAP BTP HANA Cloud Service 上创建了一个数据库表。

本文介绍如何往这个数据库表里插入数据。

在 Business Application Studio 里,点击 Open HDI Container,打开 SAP HANA Database Explorer for SAP HANA Cockpit:

有时会遇到 Warning:Invalid Request Error 的警告信息,此时 retry 即可。

注意:SAP Business Technology Platform trial 账号,其下创建的 HANA Cloud Service 实例,每天都会自动被关闭,需要开发者手动重新开启。

手动开启后,状态处于 Running:

重新刷新 SAP HANA Database Explorer for SAP HANA Cockpit:

之后一切正常了。

打开 SQL console:

将下列 JSON 数据插入数据库表:

insert into "COMMUNITY" (DATA)  values('{"name" : "Sol" , "hint" :"I love using SAP HANA to develop applications", "learns_from" :"Sam", "office" :"Toronto", "tenure" :17, "geolocation" : "Point( -79.380186 43.647944 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Sam", "hint" :"I like developing in different languages and SQLScript", "learns_from" :"Sol", "office" :"Walldorf", "tenure" :3, "geolocation" : "Point( 8.636789 49.29487 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Jose", "hint" :"I use SAP Cloud platform to deploy cloud-native applications", "learns_from" :"Sol", "office" :"Palo Alto", "tenure" :5, "geolocation" : "Point( -122.146603 37.398989 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Charlotte", "hint" :"Developing apps with SAP HANA has been a game changer. I used to need several databases, now I only need one", "learns_from" :"Sam", "office" :"Australia", "tenure" :6, "geolocation" : "Point( 151.209092 -33.834509 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Maria", "hint" :"I am a coder. In my country, we say developing with SAP HANA is muito legal", "learns_from" :"Charlotte", "office" :"Sao Leopoldo", "tenure" :3, "geolocation" : "Point( -51.148393 -29.796256 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Wei", "hint" :"System administrator here, excited to learn you technologies", "learns_from" :"Sam", "office" :"Beijing", "tenure" :12, "geolocation" : "Point( 121.601862 31.20235 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Hiroshi", "hint" :"I developed many applications with both HANA and SQL Anywhere. I like both", "learns_from" :"Sol", "office" :"Fukuoka", "tenure" :8, "geolocation" : "Point( 130.399091 33.592314 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Saanvi", "hint" :"Developing apps from bangalore to the world", "learns_from" :"Sol", "office" :"Bangalore", "tenure" :7, "geolocation" : "Point( 77.637116 12.972402 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Rick", "hint" :"My team plays with databases regularly. HANA is one of the favorites", "learns_from" :"Maria", "office" :"Irving", "tenure" :11, "geolocation" : "Point( -96.938460 32.873744 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Ann", "hint" :"I like meeting other fellow coders", "learns_from" :"Casey", "office" :"San Ramon", "tenure" :1, "geolocation" : "Point( -121.961661 37.766586 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Hugo", "hint" :"I had never developed such cool apps before", "learns_from" :"Maria", "office" :"Monterrey", "tenure" :2, "geolocation" : "Point( -100.353643 25.64757 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Sofia", "hint" :"I connected SAP Analytics Cloud to HANA", "learns_from" :"Hiroshi", "office" :"Copenhagen", "tenure" :1, "geolocation" : "Point( 12.589387 55.710640 )" }');
insert into "COMMUNITY" (DATA) values('{"name" :"Muhammed", "hint" :"I used to prefer Excel spreadsheets but Lumira changed that for me", "learns_from" :"Charlotte", "office" :"Ra anana", "tenure" :11, "geolocation" : "Point( 34.882402 32.201905 )" }');

在 Messages 面板里看到插入成功的消息:

带有 JSON 列的表允许您在同一文档中存储与同一记录相关的所有信息。 这些文档不像典型的关系表那样具有预定义的格式或字段数量。

当文档之间的关系不太相关并且数据结构需要灵活时,这尤其有用。 例如,可能不会输入电话号码等字段并且可能根本不会存储的用户帐户数据。 在相同的场景中,用户记录之间不需要外键和关系。

这种类型的数据库也称为 NoSQL,因为它存储 Not-only 结构化数据。 SAP HANA 将 SQL 用于 JSON 列中的 CRUD 操作。

使用如下 SQL 语句查询 Maria 所在的办公室:

SELECT *FROM JSON_TABLE(COMMUNITY.DATA, '$'COLUMNS(LOCATION NVARCHAR(200) PATH '$.office',NAME NVARCHAR(200) PATH '$.name')) AS JT where NAME = 'Maria'

下面我们再学习如何使用常规的 SQL 操作。

新建一个 DEVS.hdbtable 文件:

column table "DEVS"("DEVNAME" nvarchar(100) PRIMARY KEY,"LEARNS_FROM" nvarchar(100),"HINT_TEXT" nvarchar(1000),"CITY" nvarchar(100),"LON_LAT" nvarchar(200)
)

SAP HANA 默认创建列式表。 column 关键字是可选的,但在示例中用于提醒 SAP HANA 中基于列的本地表存储。

点击 Deploy 按钮:

Deploy 成功之后,回到 SAP HANA Database Explorer for SAP HANA Cockpit 之后,能看到刚才创建的 Column table:

我们使用如下 SQL 语句,将之前 COMMUNITY 数据库里的 JSON 内容,解析出来,插入到该 colum table 中去:

insert into DEVS
SELECT NAME, LEARNS_FROM, HINT, OFFICE, GEOLOCATIONFROM JSON_TABLE(COMMUNITY.DATA, '$'COLUMNS(LOCATION NVARCHAR(200) PATH '$.office',NAME NVARCHAR(200) PATH '$.name',LEARNS_FROM NVARCHAR(200) PATH '$.learns_from',HINT NVARCHAR(200) PATH '$.hint',OFFICE NVARCHAR(200) PATH '$.office',GEOLOCATION NVARCHAR(200) PATH '$.geolocation',TENURE NVARCHAR(30) PATH '$.tenure')) AS JT where to_bigint(TENURE) > 1

11行插入成功。

使用如下语句,查询 hint_text 包含字符串 develop 的开发者:

select DEVNAME, TO_NVARCHAR(HINT_TEXT) as "testimony", LEARNS_FROM
from DEVS
where contains(HINT_TEXT, '%develop%')

新建一个 LEARNING_FROM 数据库表,源代码如下:

column table LEARNING_RELATION(ID int NOT NULL UNIQUE GENERATED ALWAYS AS IDENTITY (START WITH 10 INCREMENT BY 1),SOURCE nvarchar(100) NOT NULL,TARGET nvarchar(100) NOT NULL
)

重新部署后,打开 HANA Database Explorer:

将 COMMUNITY 和 DEVS 数据表的内容插入 LEARNING_RELATION:

insert into LEARNING_RELATION
(SOURCE, TARGET)
select LEARNS_FROM, DEVNAME
from DEVS

既然我们已经有了一张表,其中包含社区中的学习关系和专家开发人员,您可以找出这些人之间的关系。 表示人员网络的一种方法是使用图形数据库。

在 SAP HANA 中,图由顶点(在本例中为开发人员)和边(它们之间的连接,取自字段 LEARNS_FROM)表示。

创建一个新的 graph 模型:

graph workspace HANA_GRAPHedge table LEARNING_RELATIONsource column SOURCEtarget column TARGETkey column IDvertex table DEVSkey column DEVNAME

查看 graph:

效果如下图所示:

找出离 Thomas 最近的开发者:

select DEVNAME,
round(st_geomFromText('Point( 11.57548 48.13702 )', 4326).st_distance(st_geomFromtext(LON_LAT, 4326), 'kilometer'),0) as DISTANCE_KM
from DEVS
where contains(HINT_TEXT, '%develop%')
order by DISTANCE_KM

答案是 Sam.

更多Jerry的原创文章,尽在:“汪子熙”:

SAP HANA Cloud 学习教程之二: 如何往SAP BTP 上 HANA Cloud 实例的数据库表里插入数据相关推荐

  1. SAP UI5 应用开发教程之二:SAP UI5 的引导过程(Bootstrap)

    本教程的前一篇 Hello world 的文章,我们只是了解了一个最基本的 index.html 页面的开发方式,尚未真正接触到 SAP UI5. 从本文开始,我们将会在前一步骤的 index.htm ...

  2. Seagull PHP框架学习教程之二

    在使用Seagull框架开发项目之前,你需要了解以下基本概念: module(模块,我在这边翻译为模块,各人说法不一样,无关重要),在Seagull内,它的概念是指对某个项目功能的一种逻辑上的分组.一 ...

  3. STM32CubeMX学习教程之二:GPIO输入之外部中断

    完整源码下载: https://github.com/simonliu009/STM32CubeMX-GPIO-EXIT 本篇主要讲述GPIO外部中断输入检测,实际物理输入方式是按键,但是实际上更适合 ...

  4. SAP UI5 应用开发教程之二十九 - SAP UI5 的路由和导航功能介绍试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  5. SAP UI5 初学者教程之二:SAP UI5 的引导过程(Bootstrap) 试读版

    Jerry 从 2014 年加入 SAP成都研究院 CRM Fiori 开发团队之后开始接触 SAP UI5,曾经在 SAP 社区和"汪子熙"微信公众号上发表过多篇关于 SAP U ...

  6. 【SAP PO】SAP PO 接口配置完整教程之二REST服务对接

    SAP PO 接口配置完整教程之二REST服务对接 1.了解服务协议 1.1.服务通讯协议 1.2.具体接口协议 1.3.接口服务测试 2.PO端接口配置 2.1.PO端ESR配置 2.2.PO端IB ...

  7. 乐鑫代理-启明云端分享ESP32系列教程之二:Linux搭建esp-idf环境

    提示:此教程依据乐鑫官方的ESP32入门教程总结而来,仅供个人参考学学习,如有错误,欢迎批评指正.乐鑫官方参考: 乐鑫官方文档地址 1.搭建esp-idf环境 1.1安装虚拟机与Ubuntu 未安装请 ...

  8. STL快速入门学习教程之map的简单使用

    STL快速入门学习教程之map的简单使用 map是STL中的一个关联容器,它以一对一的数据进行整理(第一个数值称为关键字,且这个关键字只能在map中出现一次,第二个数值称为前关键字的值),正是由于这种 ...

  9. NVIDIA Jetson TX1 系列开发教程之二:刷机与开发前准备

    NVIDIA Jetson TX1 系列开发教程之二:刷机与开发前准备 转载请注明作者和出处:http://blog.csdn.net/u011475210 嵌入式平台:NVIDIA Jetson T ...

最新文章

  1. 中科燕园GIS外包-----基于ArcGIS的应急平台
  2. Thread pool引起的程序连接数据库响应慢
  3. java 等待提示 事件_Java,Jsp点击事件后,出现等沙漏,处理等待状态时,有提示在动,适合任何事件使用...
  4. qdialog 只有点击才能获得焦点_使用金属激光切割机时该注意什么才能保证产品质量?...
  5. springmvc全局异常处理ControllerAdvice区分返回响应类型是页面还是JSON
  6. iNet Network Scanner Mac(网络扫描工具)
  7. Java实现 定义一个名为Rectangle的类表示矩形 求面积周长
  8. 实战:模拟登录知乎网站(添加cookie)
  9. 智能音箱场景下的性能优化
  10. 【C++ 】STL求全排列和组合
  11. Super-Auto-Refresh_v2.5.1实现谷歌浏览器定时刷新
  12. Java学习体系(骨灰级详细)
  13. 优秀的工程师是怎样炼成的
  14. 系统集成项目管理 : 挣值管理(PV、EV、AC、SV、CV、SPI、CPI、VAC、BAC、ETC、EAC、)公式全集
  15. 正则表达式常用验证及打油诗一首
  16. LeetCode 409. 最长回文串(构造最长回文判断)
  17. tkMybatis基本用法(二)
  18. 【友盟+】首席数据科学家李丹枫:用数据指导创业
  19. mount system
  20. oralce异常 ORA-04031: unable to allocate bytes of shared memory (shared pool,unknown object....

热门文章

  1. POJ2774 Long Long Message
  2. MongoDB-pymongo
  3. Microsoft发布用于统一事件处理的Azure事件网格
  4. 在 Linux 上使用 Meld 比较文件夹
  5. Android知识点剖析系列:深入了解layout_weight属性
  6. Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive.
  7. 获取32R的图像的直方图的一个算法
  8. mybatis-plus中 queryWrapper查询对象常见方法
  9. hosts文件是什么?
  10. 软件测试白皮书-判定表法