Dela via


REPAIR TABLE

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Det här kommandot reparerar eller ändrar partitioner för icke-Delta Lake-tables. Använd SYNC METADATA-satsen med Delta Lake för att updatecatalog-tjänsten baserat på table-metadata, eller för att generate Iceberg-metadata för tables som är aktiverade för Iceberg-läsningar.

Funktionaliteten som stöds skiljer sig mellan Unity Catalog och Hive-metaarkivet och huruvida tables stöds av Delta Lake.

Syntax

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

För markerad ja Databricks SQL markerad ja Databricks Runtime 12.2 LTS och senare MSCK är det valfritt.

Parameters

  • table_name

    Namnet på table. Om table inte kan hittas genererar Azure Databricks ett TABLE_OR_VIEW_NOT_FOUND fel.

  • ADDeller DROPSYNCPARTITIONS

    Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 10.4 LTS och senare

    När du skapar en icke-Delta-table med hjälp av PARTITIONED BY-satsen genereras och registreras partitioner i Hive-metaarkivet. Men om du skapar den partitionerade table från befintliga data registreras partitioner inte automatiskt i Hive-metaarkivet. Kör MSCK REPAIR TABLE för att registrera partitionerna.

    Ett annat sätt att återställa partitioner är att använda ALTER TABLE RECOVER PARTITIONS.

    Om table cachelagras rensar kommandot tablecachelagrade data och alla beroenden som refererar till den. Cachen fylls nästa gång table eller beroenden används.

    • KOMMANDO LÄGG TILL lägger till nya partitioner i sessionen catalog för alla undermappar i den grundläggande table mapp som inte tillhör någon table partition. ADD är standardargumentet om inget annat alternativ har angetts.
    • DROP kommando släpper alla partitioner från sessionen catalog som har icke-befintliga platser i filsystemet.
    • SYNC är kombinationen av DROP och ADD.
  • SYNC METADATA

    Delta Lake bara.

    Läser transaktionsloggen för mål table och uppdaterar metadatainformationen i catalog-tjänsten. Om du vill köra det här kommandot måste du ha behörigheten ÄNDRA och behörigheten SELECT på mål-table, och behörigheterna USE SCHEMA och USE CATALOG på den överordnade schema och catalog.

    Det här argumentet fungerar med Hive-metaarkivet i Databricks Runtime 16.1 och senare. För Hive-metaarkiv tablesmåste du ha behörigheten USAGE och MODIFY.

    Om Delta UniForm är aktiverat (kräver Unity Catalog) utlöser SYNC METADATA manuell konvertering av aktuella Delta-metadata till Iceberg-metadata och synkroniserar den senaste Iceberg-versionen för Unity Catalog Iceberg-slutpunkten. Se Läs Delta-tables med Iceberg-klienter.

Exempel (icke-Delta Lake tables)

-- 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

Exempel (Unity Catalogtable)

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