Dela via


REPAIR TABLE

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

Det här kommandot uppdaterar Delta-tabellmetadata till Unity Catalog-tjänsten. För icke-Delta-tabeller repareras tabellens partitioner och Hive-metaarkivet uppdateras.

  • Deltatabeller: När det körs med Delta-tabeller med argumentet SYNC METADATA läser det här kommandot deltaloggen i måltabellen och uppdaterar metadatainformationen till Unity Catalog-tjänsten.
  • Icke-Delta-tabeller: När det körs med icke-Delta-tabeller återställer det här kommandot alla partitioner i katalogen i en icke-Delta-tabell och uppdaterar Hive-metaarkivet.

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.

Parametrar

  • table_name

    Tabellens namn. Om det inte går att hitta tabellen skapar 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-tabell med hjälp av PARTITIONED BY -satsen genereras och registreras partitioner i Hive-metaarkivet. Men om du skapar den partitionerade tabellen från befintliga data registreras inte partitioner 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 tabellen cachelagras rensar kommandot tabellens cachelagrade data och alla beroenden som refererar till den. Cacheminnet fylls nästa gång tabellen eller beroenden nås.

    • KOMMANDOT ADD lägger till nya partitioner i sessionskatalogen för alla undermappar i bastabellmappen som inte tillhör några tabellpartitioner. ADD är standardargumentet om inget annat alternativ har angetts.
    • DROP-kommandot släpper alla partitioner från sessionskatalogen som har icke-befintliga platser i filsystemet.
    • SYNC är kombinationen av DROP och ADD.
  • ** SYNC METADATA**

    Läser deltaloggen i måltabellen och uppdaterar metadatainformationen i Unity Catalog-tjänsten. Om du vill köra det här kommandot måste du ha behörigheten ÄNDRA och VÄLJ i måltabellen och ANVÄNDNING av det överordnade schemat och katalogen. Det här kommandot med det här argumentet misslyckas om måltabellen inte lagras i Unity Catalog.

    Om Delta UniForm är aktiverat SYNC METADATA utlöser manuell konvertering av aktuella Delta-metadata till Iceberg-metadata och synkroniserar den senaste Iceberg-versionen för Unity Catalog Iceberg-slutpunkten. Se Använda UniForm för att läsa Delta-tabeller med Iceberg-klienter.

Exempel (icke-Delta Lake-tabeller)

-- 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 Catalog-tabell)

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