REPAIR TABLE
Gäller för: Databricks SQL 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 Databricks SQL Databricks Runtime 12.2 LTS och senare MSCK
är det valfritt.
Parametrar
-
Tabellens namn. Om det inte går att hitta tabellen skapar Azure Databricks ett TABLE_OR_VIEW_NOT_FOUND fel.
ADD
ellerDROP
SYNC
PARTITIONS
Gäller för: Databricks SQL 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örMSCK 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