首批通过分布式安全可靠测评,为关键业务系统打造
管理外部文件
更新时间:2026-06-25 17:51:33
外表创建时,系统会将 LOCATION 中指定路径下匹配 PATTERN 的文件列表保存在 OceanBase 数据库的系统表中,外表扫描时会根据该列表来访问外部文件。您可以查看和更新外表可访问的文件。
查看外表的文件
外表创建后,系统租户(sys 租户)可以通过 CDB_OB_EXTERNAL_TABLE_FILES 视图来查看集群中的所有外表信息;用户租户可以通过 ALL_OB_EXTERNAL_TABLE_FILES 视图和 DBA_OB_EXTERNAL_TABLE_FILES 视图来查看外表信息,语句示例如下:
外部目录中仅有一个文件的场景
SELECT * FROM oceanbase.DBA_OB_EXTERNAL_TABLE_FILES;查询结果如下:
+------------+--------------+----------------+------------------------------+-----------+ | TABLE_NAME | TABLE_SCHEMA | PARTITION_NAME | FILE_URL | FILE_SIZE | +------------+--------------+----------------+------------------------------+-----------+ | ext_t3 | test | P0 | xx.xx.xx.208:2882%data.csv | 34 | | ext_t2 | test | P0 | xx.xx.xx.208:2882%data.csv | 34 | | ext_t1 | test | P0 | xx.xx.xx.208:2882%data.csv | 34 | +------------+--------------+----------------+------------------------------+-----------+ 3 rows in set外部目录中有多个文件的场景
SELECT * FROM oceanbase.DBA_OB_EXTERNAL_TABLE_FILES WHERE TABLE_NAME= 'ext_t4';查询结果如下:
+------------+--------------+----------------+-------------------------------+-----------+ | TABLE_NAME | TABLE_SCHEMA | PARTITION_NAME | FILE_URL | FILE_SIZE | +------------+--------------+----------------+-------------------------------+-----------+ | ext_t4 | test | P0 | xx.xx.xx.208:2882%data1.csv | 33 | | ext_t4 | test | P0 | xx.xx.xx.208:2882%data2.csv | 34 | +------------+--------------+----------------+-------------------------------+-----------+ 2 rows in set
其中:
TABLE_NAME:外表的表名。TABLE_SCHEMA:外表所在的数据库名。PARTITION_NAME:外表的分区名。FILE_URL:外表所访问的文件的 URL。FILE_SIZE:外表所访问的文件的大小。
更新外表的文件
外表创建后,如果外部目录中新增了其他文件(该文件在 LOCATION 中指定的路径下且匹配 PATTERN),您需要执行更新外表文件的操作,才能通过外表访问新增的文件。
更新外表文件的 SQL 语句如下:
ALTER EXTERNAL TABLE table_name REFRESH;
下面以一个简单的示例进行说明。假设有一个外表 ext_t4,其外部文件中包含 data1.csv 和 data2.csv 两个文件,再在同目录中新增一个 data3.csv 文件。
更新外表文件前,查询该外表中的所有文件。
SELECT * FROM oceanbase.DBA_OB_EXTERNAL_TABLE_FILES WHERE TABLE_NAME= 'ext_t4';查询结果如下:
+------------+--------------+----------------+-------------------------------+-----------+ | TABLE_NAME | TABLE_SCHEMA | PARTITION_NAME | FILE_URL | FILE_SIZE | +------------+--------------+----------------+-------------------------------+-----------+ | ext_t4 | test | P0 | xx.xx.xx.208:2882%data1.csv | 33 | | ext_t4 | test | P0 | xx.xx.xx.208:2882%data2.csv | 34 | +------------+--------------+----------------+-------------------------------+-----------+ 2 rows in set进入外表所在的数据库,并更新外表文件。
ALTER EXTERNAL TABLE test.ext_t4 REFRESH;再次查询该外表中的所有文件。
SELECT * FROM oceanbase.DBA_OB_EXTERNAL_TABLE_FILES WHERE TABLE_NAME= 'ext_t4';查询结果如下:
+------------+--------------+----------------+-------------------------------+-----------+ | TABLE_NAME | TABLE_SCHEMA | PARTITION_NAME | FILE_URL | FILE_SIZE | +------------+--------------+----------------+-------------------------------+-----------+ | ext_t4 | test | P0 | xx.xx.xx.208:2882%data1.csv | 33 | | ext_t4 | test | P0 | xx.xx.xx.208:2882%data2.csv | 34 | | ext_t4 | test | P0 | xx.xx.xx.208:2882%data3.csv | 33 | +------------+--------------+----------------+-------------------------------+-----------+ 3 rows in set