共用方式為


REPAIR TABLE

適用於:核取記號為「是」Databricks SQL 核取記號為「是」Databricks Runtime

此命令會修復或修改非 Delta Lake 資料表的數據分割。 搭配 Delta Lake 使用 SYNC METADATA 子句,可以根據表格的元數據更新目錄服務,或者為已啟用 Iceberg 讀取的表格生成 Iceberg 元數據。

在 Unity Catalog 和 Hive metastore 之間,以及資料表是否由 Delta Lake 支援,所支援的功能有所不同。

語法

[ MSCK ] REPAIR TABLE table_name
{
    [ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}

針對 核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 12.2 LTS 和更新版本, MSCK 是選擇性的。

參數

  • table_name

    資料表的名稱。 如果找不到資料表,Azure Databricks 就會產生 TABLE_OR_VIEW_NOT_FOUND 錯誤。

  • ADDDROPSYNCPARTITIONS

    適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 10.4 LTS 和更新版本

    使用 PARTITIONED BY 子句建立非 Delta 數據表時,會在 Hive 中繼存放區中產生並註冊數據分割。 不過,如果您從現有的數據建立分割數據表,則不會在Hive中繼存放區中自動註冊數據分割。 執行 MSCK REPAIR TABLE 以註冊數據分割。

    另一個復原分割區的方式是使用 ALTER TABLE RECOVER PARTITIONS

    如果快取數據表,命令會清除資料表的快取數據,以及參考數據表的所有相依專案。 快取會在下次存取數據表或相依專案時填滿。

    • ADD 命令會將新的分割區新增至會話目錄,供不屬於任何數據表分割區之基表資料夾中的所有子資料夾使用。 如果沒有指定其他選項,則 ADD 是預設自變數。
    • DROP 命令會從文件系統中具有非現有位置的會話目錄卸除所有分割區。
    • SYNC 是DROPADD的組合
  • SYNC METADATA

    僅適用於 Delta Lake。

    讀取目標數據表的事務歷史記錄,並更新目錄服務中的元數據資訊。 若要執行此命令,您必須在目標數據表上擁有MODIFY和SELECT許可權,以及父架構和目錄的USE SCHEMA和USE CATALOG許可權。

    此自變數適用於 Databricks Runtime 16.1 和更新版本中的 Hive 中繼存放區。 針對 Hive 中繼存放區數據表,您必須具有 USAGE 和 MODIFY 權限。

    如果已啟用 Delta UniForm(需要 Unity 目錄),SYNC METADATA 會觸發將目前的 Delta 元數據手動轉換成 Iceberg 元數據,並同步 Unity 目錄 Iceberg 端點的最新 Iceberg 版本。 請參閱<使用 UniForm 來讀取 Delta 資料表與 Iceberg 使用者端>。

範例 (非 Delta Lake 數據表)

-- create a partitioned table from existing data /tmp/namesAndAges.parquet
> CREATE TABLE t1 (name STRING, age INT) USING parquet PARTITIONED BY (age)
  LOCATION "/tmp/namesAndAges.parquet";

-- SELECT * FROM t1 does not return results
> SELECT * FROM t1;

-- run MSCK REPAIR TABLE to recovers all the partitions
> MSCK REPAIR TABLE t1;

-- SELECT * FROM t1 returns results
> SELECT * FROM t1;
    name age
  ------- ---
  Michael  20
   Justin  19
     Andy  30

範例 (Unity 目錄資料表)

-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA