外部目录
外部目录是从 Oracle AI Data Platform Workbench 之外的位置获取数据的目录。
外部目录连接到 Oracle Autonomous AI Lakehouse 、Oracle AI Database 和 Oracle Autonomous AI Transaction Processing 等源,以将数据提取到 AI Data Platform Workbench 中。外部目录使用在外部目录创建期间提供的身份证明来查询外部源。有关数据源的更多信息,请参阅内部源。
例如,如果为 Autonomous AI Lakehouse 实例创建外部目录,其中使用的 Autonomous AI Lakehouse 用户凭证可以访问 schema1 ,但不能访问 schema2 ,则外部目录中仅显示 schema1 。具有外部目录权限的用户只能查询 Autonomous AI Lakehouse 用户有权访问的模式。
注意:
AI 数据平台工作台不支持从可插入数据库 (Pluggable Databases,PDB) 之间共享的方案和表或从 Oracle 维护的方案和表中收集数据。Autonomous AI Lakehouse 和 Autonomous AI Transaction Processing 所需的权限
- 用于连接到数据库的 CREATE SESSION
- 通过最小权限授予或专用读取角色对所需对象(表/视图/外部表)的 SELECT 访问权限
- 阅读,写入 DIRECTORY DATA_PUMP_DIR
限制
外部目录不支持 UPDATE 操作。使用外部目录表进行搜索和查询访问。
不支持 DDL,即使用于创建外部目录的身份证明具有执行 DDL 语句的权限也是如此。
- 如果以大写形式提供表名,则使用大写字母创建表,并遵循 Autonomous AI Lakehouse 中的默认不区分大小写行为。
- 如果以小写形式提供表名,则会在 Autonomous AI Lakehouse 中以区分大小写的方式创建表。通过 Autonomous AI Lakehouse 创建的表的列名始终区分大小写。
使用 SQL 刷新外部目录
您可以使用 SQL 语法刷新外部目录、方案和表的元数据。
要刷新外部目录,请使用:
REFRESH EXTERNAL CATALOG <<catalog_name>>要刷新外部目录中的方案,请使用:
REFRESH SCHEMA IN EXTERNAL CATALOG <<catalog_name.schema_name>>要刷新外部目录中方案中的表,请使用:
REFRESH TABLE IN EXTERNAL CATALOG <<catalog_name.schema_name.table_name>>有关详细信息,请参阅 SQL 语法。
如何从外部目录中的表中删除数据
当将目录和表配置为支持下推 SQL DELETE 时,可以使用 Spark 写入路径从外部目录表中删除行。
使用目录 ID 删除表数据:Python 示例
from pyspark.sql.types import StructType
df = spark.createDataFrame([], StructType([]))
df.write
.format("aidataplatform")
.option("catalog.id", "<catalog>")
.option("pushdown.sql", "DELETE FROM <schema>.<target_table> WHERE ID = 2")
.save()
使用目录 ID 删除表数据:Scala 示例
val df = spark.emptyDataFrame
df.write
.format("aidataplatform")
.option("catalog.id", "<catalog>")
.option("pushdown.sql", "DELETE FROM <schema>.<target_table> WHERE ID = 2")
.save()
用于删除表数据的摄取样式示例:Python 示例
from pyspark.sql.types import StructType
df = spark.createDataFrame([], StructType([]))
df.write
.format("aidataplatform")
.option("data.asset.type", "ORACLE_ALH")
.option("tns.alias", alhTns)
.option("user.name", userName)
.option("wallet.content", alhWalletContent)
.option("password", alhPassword)
.option("pushdown.sql", "DELETE FROM ADMIN.PUSHDOWN_FEATURE WHERE ID = 2")
.save()用于删除表数据的摄取样式示例:Scala 示例
val df = spark.emptyDataFrame
df.write
.format("aidataplatform")
.option("data.asset.type", "ORACLE_ALH")
.option("tns.alias", alhTns)
.option("user.name", userName)
.option("wallet.content", alhWalletContent)
.option("password", alhPassword)
.option("pushdown.sql", "DELETE FROM ADMIN.PUSHDOWN_FEATURE WHERE ID = 2")
.save()


