首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle SODA :手动创建表

Oracle SODA :手动创建表
EN

Stack Overflow用户
提问于 2021-07-09 13:31:27
回答 2查看 135关注 0票数 0

我想使用Oracle SODA,但是由于安全原因,从java应用程序连接到DB的用户不能修改表。

我确实将"SODA_APP“授予了模式,因此SODA java可以工作(它调用SODA pl/sql函数),但显然无法使用”不足的权限“创建集合。

我可以在测试DB中创建集合,并复制表结构。但我也必须复制元数据。

我知道这是因为医生说:

不使用SQL删除作为集合基础的数据库表。除了存储在其表中的文档外,集合还具有元数据,这些元数据也保存在Oracle数据库中。删除集合表也不会删除关联的元数据。

参考文献:https://docs.oracle.com/cd/E56351_01/doc.30/e58124/soda_for_java.htm#ADSDA111

有人知道集合的元数据位于哪里吗?我如何手动创建(或复制)?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-07-13 13:50:59

因此,元数据位于本表中:

XDB.JSON$COLLECTION_METADATA

有当前用户的视图。

SELECT *来自XDB.JSON$USER_COLLECTION_METADATA

它看起来与文档中的"user_soda_collections“视图相同。

票数 0
EN

Stack Overflow用户

发布于 2021-09-03 14:04:51

是的,正确。USER_SODA_COLLECTIONS字典视图报告由当前用户创建的集合。

https://docs.oracle.com/en/database/oracle/simple-oracle-document-access/adsdi/overview-soda.html#GUID-AFA0FE26-415B-4BC0-8545-06C38855D54C

如果要避免复制,可以将集合“映射”到现有的集合。

如果您想要在预先存在的集合上创建一个集合,您应该能够使用创建集合的“MAP”模式。SODA创建集合,将其映射到现有模式中的表。为此,在创建集合时,需要在元数据中指定"schemaName""tableName"

代码语言:javascript
复制
{
  "schemaName": "<SCHEMA_NAME_OF_EXISTING_TABLE>",
  "tableName": "<EXISTING_TABLE_NAME>",
    ...your other fields in metadata...
}

此外,如果希望此集合不可变,则可以在元数据中使用"readOnly"字段(将其设置为TRUE)。

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68317661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档