首批通过分布式安全可靠测评,为关键业务系统打造
管理外部文件
更新时间:2026-06-29 10:16:47
外表创建时,系统会将 LOCATION 中指定路径下匹配 PATTERN 的文件列表保存在 OceanBase 数据库的系统表中,外表扫描时会根据该列表来访问外部文件。您可以查看和更新外表可访问的文件。
查看外表的文件
外表创建后,可以通过 ALL_OB_EXTERNAL_TABLE_FILES 视图和 DBA_OB_EXTERNAL_TABLE_FILES 视图来查看外表信息,语句示例如下:
外部目录中仅有一个文件的场景
SELECT * FROM SYS.DBA_OB_EXTERNAL_TABLE_FILES;查询结果如下:
+------------+-------+----------------+------------------------------+-----------+ | TABLE_NAME | OWNER | PARTITION_NAME | FILE_URL | FILE_SIZE | +------------+-------+----------------+------------------------------+-----------+ | EXT_T3 | SYS | P0 | xx.xx.xx.208:2882%data.csv | 29 | +------------+-------+----------------+------------------------------+-----------+ 1 row in set外部目录中有多个文件的场景
SELECT * FROM SYS.DBA_OB_EXTERNAL_TABLE_FILES WHERE TABLE_NAME= 'EXT_T4';查询结果如下:
+------------+-------+----------------+-------------------------------+-----------+ | TABLE_NAME | OWNER | PARTITION_NAME | FILE_URL | FILE_SIZE | +------------+-------+----------------+-------------------------------+-----------+ | EXT_T4 | SYS | P0 | xx.xx.xx.208:2882%data2.csv | 34 | | EXT_T4 | SYS | P0 | xx.xx.xx.208:2882%data1.csv | 33 | +------------+-------+----------------+-------------------------------+-----------+ 2 rows in set
其中:
TABLE_NAME:外表的表名。OWNER:外表所属的用户。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 SYS.DBA_OB_EXTERNAL_TABLE_FILES WHERE TABLE_NAME= 'EXT_T4';查询结果如下:
+------------+-------+----------------+-------------------------------+-----------+ | TABLE_NAME | OWNER | PARTITION_NAME | FILE_URL | FILE_SIZE | +------------+-------+----------------+-------------------------------+-----------+ | EXT_T4 | SYS | P0 | xx.xx.xx.208:2882%data2.csv | 34 | | EXT_T4 | SYS | P0 | xx.xx.xx.208:2882%data1.csv | 33 | +------------+-------+----------------+-------------------------------+-----------+ 2 rows in set进入外表所在的数据库,并更新外表文件。
ALTER EXTERNAL TABLE EXT_T4 REFRESH;再次查询该外表中的所有文件。
SELECT * FROM SYS.DBA_OB_EXTERNAL_TABLE_FILES WHERE TABLE_NAME= 'EXT_T4';查询结果如下:
+------------+-------+----------------+-------------------------------+-----------+ | TABLE_NAME | OWNER | PARTITION_NAME | FILE_URL | FILE_SIZE | +------------+-------+----------------+-------------------------------+-----------+ | EXT_T4 | SYS | P0 | xx.xx.xx.208:2882%data3.csv | 33 | | EXT_T4 | SYS | P0 | xx.xx.xx.208:2882%data2.csv | 34 | | EXT_T4 | SYS | P0 | xx.xx.xx.208:2882%data1.csv | 33 | +------------+-------+----------------+-------------------------------+-----------+ 3 rows in set