SQL Developer管理RESTful 服务

news2024/12/27 1:25:20

RESTful 服务依赖于ORDS(Oracle REST Data Services),所以在进行本实验前,请先确认数据库服务器上的ORDS服务已启动:

$ systemctl status ords
● ords.service - Oracle REST Data Services
   Loaded: loaded (/etc/systemd/system/ords.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-05-30 00:47:59 GMT; 4 days ago
  Process: 53329 ExecStart=/usr/bin/bash -c /etc/init.d/ords start (code=exited, status=0/SUCCESS)
 Main PID: 53458 (java)
    Tasks: 0 (limit: 202282)
   Memory: 452.0K
   CGroup: /system.slice/ords.service
           ‣ 53458 java -Doracle.dbtools.cmdline.home=/opt/oracle/ords -Duser.language=en -Duser.region=US -Dfile.encoding=UTF-8 -Djav>

登录Database Actions(即Web版的SQL Developer)。

首先需要在表一级启用REST:
在这里插入图片描述

再次右键单击对象,此时出现新的菜单cURL Command
在这里插入图片描述

首先试一下GET ALL命令:

$ curl -s --location "http://127.0.0.1:8080/ords/hr/csv_data/"
{"items":[{"col1":"e40a9db6","col2":"1b","col3":27531,"links":[{"rel":"self","href":"http://127.0.0.1:8080/ords/hr/csv_data/AAASPYAAMAABv8vAAA"}]},{"col1":"6182c817","col2":"73","col3":5355332,"links":[{"rel":"self","href":"http://127.0.0.1:8080/ords/hr/csv_data/AAASPYAAMAABv8vAAB"}]},{"col1":"5ed9e437","col2":"d2","col3":4834758,"links":[{"rel":"self","href":"http://127.0.0.1:8080/ords/hr/csv_data/AAASPYAAMAABv8vAAC"}]},{"col1":"d77868a1","col2":"64","col3":2129797,"links":[{"rel":"self","href":"http://127.0.0.1:8080/ords/hr/csv_data/AAASPYAAMAABv8vAAD"}]},{"col1":"09bfaa73","col2":"89","col3":3294896,"links":[{"rel":"self","href":"http://127.0.0.1:8080/ords/hr/csv_data/AAASPYAAMAABv8vAAE"}]},{"col1":"5054cca2","col2":"97","col3":3474577,"links":[{"rel":"self","href":"http://127.0.0.1:8080/ords/hr/csv_data/AAASPYAAMAABv8vAAF"}]},{"col1":"d20e9eb4","col2":"7c","col3":2728720,"links":[{"rel":"self","href":"http://127.0.0.1:8080/ords/hr/csv_data/AAASPYAAMAABv8vAAG"}]}],"hasMore":false,"limit":25,"offset":0,"count":7,"links":[{"rel":"self","href":"http://127.0.0.1:8080/ords/hr/csv_data/"},{"rel":"edit","href":"http://127.0.0.1:8080/ords/hr/csv_data/"},{"rel":"describedby","href":"http://127.0.0.1:8080/ords/hr/metadata-catalog/csv_data/"},{"rel":"first","href":"http://127.0.0.1:8080/ords/hr/csv_data/"}]}

由输出可知,在URL中使用了rowid作为唯一标识。这也可以从GET Single命令的格式中得到验证。
在这里插入图片描述

试一下GET Single命令:

$ curl -s --location "http://127.0.0.1:8080/ords/hr/csv_data/AAASPYAAMAABv8vAAA"
{"col1":"e40a9db6","col2":"1b","col3":27531,"links":[{"rel":"self","href":"http://127.0.0.1:8080/ords/hr/csv_data/AAASPYAAMAABv8vAAA"},{"rel":"edit","href":"http://127.0.0.1:8080/ords/hr/csv_data/AAASPYAAMAABv8vAAA"},{"rel":"describedby","href":"http://127.0.0.1:8080/ords/hr/metadata-catalog/csv_data/item"},{"rel":"collection","href":"http://127.0.0.1:8080/ords/hr/csv_data/"}]}

再试下BATCH LOAD命令。在界面中的显示如下:

curl -v -X POST -H "Content-Type: <CONTENT_TYPE>" "http://127.0.0.1:8080/ords/hr/csv_data/batchload" -d "@<FILE_NAME>"

<FILE_NAME>指定为2M.csv,此文件从网上下载:

$ curl -o 2M.csv https://c4u04.objectstorage.us-ashburn-1.oci.customer-oci.com/p/EcTjWk2IuZPZeNnD_fYMcgUhdNDIDA6rt9gaFj_WZMiL7VvxPBNMY60837hu5hga/n/c4u04/b/livelabsfiles/o/developer-library/2M.csv

$ ls -lh 2M.csv
-rw-r--r-- 1 XiaoYu 197121 61M May 30 11:43 2M.csv

<CONTENT_TYPE>为text/csv。

因此命令为:

curl -v -X POST -H "Content-Type:text/csv" "http://127.0.0.1:8080/ords/hr/csv_data/batchload" -d "@2M.csv"

万万没想到,执行出错了:

$ curl -v -X POST -H "Content-Type:text/csv" "http://127.0.0.1:8080/ords/hr/csv_data/batchload" -d "@2M.csv"
Note: Unnecessary use of -X or --request, POST is already inferred.
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 127.0.0.1:8080...
* Connected to 127.0.0.1 (127.0.0.1) port 8080
> POST /ords/hr/csv_data/batchload HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/8.6.0
> Accept: */*
> Content-Type:text/csv
> Content-Length: 59130062
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
} [65536 bytes data]
 90 56.3M    0     0   90 51.2M      0  69.1M --:--:-- --:--:-- --:--:-- 69.0M* We are completely uploaded and fine
100 56.3M    0     0  100 56.3M      0  18.7M  0:00:03  0:00:03 --:--:-- 18.7M< HTTP/1.1 200 OK
< Content-Type: text/plain
< Transfer-Encoding: chunked
<
{ [193 bytes data]
* Leftovers after chunking: 11 bytes
100 56.3M    0   182  100 56.3M     55  17.2M  0:00:03  0:00:03 --:--:-- 17.2M#ERROR Column in header row COL3e40a9db6 is not defined for table.
#INFO Number of rows processed: 0
#INFO Number of rows in error: 0
#INFO No rows committed
SEVERE: Load terminated

* Connection #0 to host 127.0.0.1 left intact

-d选项改为--data-binary就好了:

$ file 2M.csv
2M.csv: ASCII text, with CRLF line terminators

$ curl --write-out '%{time_total}'  -X POST --data-binary "@2M.csv"  -H "Content-Type: text/csv"  http://localhost:8080/ords/hr/csv_data/batchload
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 60.3M    0   170  100 60.3M      5  1948k  0:00:31  0:00:31 --:--:-- 2038k#INFO Number of rows processed: 2,097,148
#INFO Number of rows in error: 0
#INFO Last row processed in final committed batch: 2,097,148
SUCCESS: Processed without errors
31.735870

参考

  • 4.1 About RESTful Web Services
  • Oracle LiveLabs: ORDS: Build Powerful, Secure, RESTful ORDS APIs for Your Oracle Autonomous Database
  • REST Enable Schema Aliases and SQL Developer Web
  • cURL vs Python: loading data from a file via Oracle REST API

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

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

相关文章

动态规划7:LCR 166. 珠宝的最高价值

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;LCR …

最新版wordpress网创资源美化以及更新自动同步插件

最新更新了美化右侧悬浮图标 底部分类板块&#xff0c;以及文章自动同步插件 1.支持分类替换 将主站同步过来的文章分类进行替换 2.支持本地化文章图片 &#xff08;使用储存桶可能会导致无法保存图片&#xff09; 3.支持自定义文章作者&#xff08;选择多个作者则同步到的…

Python round函数详解

大家好&#xff0c;在 Python 编程中&#xff0c;经常需要对数字进行舍入操作。无论是在金融领域的货币计算&#xff0c;还是科学计算中的数据处理&#xff0c;都可能需要使用到四舍五入功能。为了满足这一需求&#xff0c;Python 提供了一个内置函数 round()&#xff0c;它能够…

Java多线程-初阶1

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 1. 认识线程&#xff08;Thread&#xff09; 1.线程是什么 ⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代…

白酒:茅台镇白酒的精致包装与品牌形象

茅台镇&#xff0c;这个位于中国贵州省的小镇&#xff0c;因其与众不同的自然环境和杰出的酿酒工艺而成为世界著名的白酒产区。作为茅台镇的品牌&#xff0c;云仓酒庄豪迈白酒不仅在品质和口感上追求卓着&#xff0c;更在包装和品牌形象上展现出精致与品味。 云仓酒庄豪迈白酒的…

【vue-admin-template】设置前后端访问地址

最近在使用vue-admin-template模板进行二次开发&#xff0c;GitHub地址&#xff1a; Vue-Admin-Template。 如果要在该项目中设置前后端的访问IP及端口&#xff0c;可以这样做&#xff1a; 前端&#xff1a;在vue.config.js中&#xff1a; 后端&#xff1a;在request.js中&…

Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。

文章目录 前言一、Django ORM介绍二、项目快速搭建三、操作1、view.pya、增加操作b、删除操作c、修改操作d、查询操作 2、urls.py 前言 上接博文&#xff1a;Django学习二&#xff1a;配置mysql&#xff0c;创建model实例&#xff0c;自动创建数据库表&#xff0c;对mysql数据…

Day44 代码随想录打卡|二叉树篇---找树左下角的值

题目&#xff08;leecode T513&#xff09;&#xff1a; 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 方法&#xff1a;本题需要找二叉树左下角的值&#xff0c;因此该节点首先是在最后一行&#xff0…

java——顺序表

前言&#xff1a;顺序表是线性表的一种&#xff0c;它是较于数组更加灵活的一种储存方式。线性表通常是逻辑上是连续的一条直线&#xff0c;但在物理上不是连续的。java中已经实现好了一个顺序表&#xff0c;搭配泛型可以支持各种类型的使用&#xff0c;下面就来介绍该如何使用…

如何修复d3dcompiler43.dll丢失问题,这三种方法可轻松解决

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是“计算机缺失d3dcompiler43.dll”。这个问题可能会影响到计算机的正常运行&#xff0c;让我们无法正常使用某些软件或者游戏。那么&#xff0c;究竟什么是d3dcompiler43.dll&#xff1f;为什…

Golang | Leetcode Golang题解之第128题最长连续序列

题目&#xff1a; 题解&#xff1a; func longestConsecutive(nums []int) int {numSet : map[int]bool{}for _, num : range nums {numSet[num] true}longestStreak : 0for num : range numSet {if !numSet[num-1] {currentNum : numcurrentStreak : 1for numSet[currentNum…

构筑数字文创产业生态,推动集群发展

随着数字技术的飞速发展&#xff0c;数字影像文创产业正迎来前所未有的发展机遇。作为西部地区的文创产业高地&#xff0c;成都国际数字影像产业园积极响应时代潮流&#xff0c;致力于推动数字影像文创产业集群的发展&#xff0c;为文创产业的繁荣贡献力量。 成都国际数字影像产…

Vue3:eachars 折线图 数据不联动 和 tooltip: trigger: ‘axis‘ 不生效,不提示数据

问题1&#xff1a; 点击折线图的头部数据&#xff08;Email、UnionAds等&#xff09; 下面数据线不联动问题 问题2&#xff1a;下图是没有提示数据的Demo 这是echars官网的提示数据图 3.解决办法 &#xff08;1&#xff09;检查是否设置&#xff1a;trigger&#xff1a;axi…

上位机图像处理和嵌入式模块部署(f407 mcu中fatfs中间件使用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们已经实现了spi norflash的驱动&#xff0c;理论上这已经可以实现数据的持久化保存了。为什么还需要一个文件系统呢&#xff1f;主要原因还…

神经网络 torch.nn---Linear Layers(nn.Linear)

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.nn — PyTorch 2.3 documentation nn.Linear torch.nn.Linear(in_features, out_features, biasTrue, deviceNone, dtypeNone) 参数&#xff1a; in_features - 每个输入样本的大小out_features - 每个输出…

C++学习/复习12--vector的实现(三个基本成员函数/迭代器/扩容/插入删除/重载/测试/杨辉三角)

一、构造函数 1.匿名对象与构造函数 在C中&#xff0c;匿名对象是一个临时对象&#xff0c;它没有名称&#xff0c;通常在对象创建后&#xff0c;只使用一次后就被销毁。创建匿名对象的方式是在创建对象时不使用变量名。 下面是创建匿名对象的几种方式&#xff1a; 直接使用…

元宇宙数字藏品交易所,未来发展的大趋势

随着科技的飞速进步&#xff0c;元宇宙以其独特的魅力为数字世界绘制了一幅前所未有的宏伟蓝图。在这一宏大的背景下&#xff0c;数字藏品交易所作为连接虚拟与现实的桥梁&#xff0c;正以其卓越的优势&#xff0c;引领着数字藏品市场迈向新的高度。 首先&#xff0c;元宇宙为…

计算机组成原理·考点知识点整理

根据往年考试题&#xff0c;对考点和知识点的一个整理。 校验编码 码距 一种编码的最小码距&#xff0c;其实就是指这种编码的码距。码距有两种定义&#xff1a; 码距所描述的对象含义 2 2 2 个特定的码其二进制表示中不同位的个数一种编码这种编码中任意 2 2 2 个合法编码的…

汽车IVI中控开发入门及进阶(二十五):CVBS视频流

前言: AHD和CVBS是两种视频格式,在车载摄像头中,有支持传统CVBS模拟视频的摄像头,也有支持新的高分辨率AHD格式的摄像头。 CVBS视频是经典的模拟视频格式,在视频经常显示在小型监视器上的车辆上仍然最受欢迎。如果想要车辆的最大分辨率,可选择AHD格式,即高分辨率模拟视…

计算机网络错题答案汇总

王道学习 第1章 计算机网络体系结构 1.1 1.2