Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för:
 Databricks SQL 
 Databricks Runtime
Definierar en hanterad eller extern tabell, om du vill använda en datakälla.
Syntax
{ { [CREATE OR] REPLACE TABLE | CREATE [EXTERNAL] TABLE [ IF NOT EXISTS ] }
  table_name
  [ table_specification ]
  [ USING data_source ]
  [ table_clauses ]
  [ AS query ] }
table_specification
  ( { column_identifier column_type [ column_properties ] } [, ...]
    [ , table_constraint ] [...] )
column_properties
  { NOT NULL |
    COLLATE collation_name |
    GENERATED ALWAYS AS ( expr ) |
    GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( [ START WITH start | INCREMENT BY step ] [ ...] ) ] |
    DEFAULT default_expression |
    COMMENT column_comment |
    column_constraint |
    MASK clause } [ ... ]
table_clauses
  { OPTIONS clause |
    PARTITIONED BY clause |
    CLUSTER BY clause |
    clustered_by_clause |
    LOCATION path [ WITH ( CREDENTIAL credential_name ) ] |
    COMMENT table_comment |
    TBLPROPERTIES clause |
    DEFAULT COLLATION default_collation_name |
    WITH { ROW FILTER clause } } [...]
clustered_by_clause
  { CLUSTERED BY ( cluster_column [, ...] )
    [ SORTED BY ( { sort_column [ ASC | DESC ] } [, ...] ) ]
    INTO num_buckets BUCKETS }
Innan Databricks Runtime 16.1 måste START WITH föregå INCREMENT BY.
Parameterar
ERSÄTTA
Om det anges ersätter du tabellen och dess innehåll om den redan finns. Den här satsen stöds endast för Delta- och Apache Iceberg-tabeller.
REPLACEbevarar tabellhistoriken och beviljas behörigheter, radfilter och kolumnmasker.Anteckning
Azure Databricks rekommenderar starkt att du använder
REPLACEi stället för att släppa och återskapa tabeller.EXTERN
Om det anges skapar du en extern tabell. När du skapar en extern tabell måste du också ange en
LOCATIONsats. När en extern tabell tas bort tas inte filernaLOCATIONbort.OM DET INTE FINNS
Om det anges och det redan finns en tabell med samma namn, ignoreras meningen.
IF NOT EXISTSkan inte samexistera medREPLACE, vilket innebär attCREATE OR REPLACE TABLE IF NOT EXISTSinte tillåts.- 
Namnet på tabellen som ska skapas. Namnet får inte innehålla en temporal specifikation eller alternativspecifikation. Om namnet inte är kvalificerat skapas tabellen i det aktuella schemat.
Tabeller som skapas i
hive_metastorefår bara innehålla alfanumeriska ASCII-tecken och understreck (INVALID_SCHEMA_OR_RELATION_NAME).Isbergstabeller måste skapas i Unity Catalog. Det är inte möjligt att skapa isbergstabeller i
hive_metastore. tabellspecifikation
Den här valfria satsen definierar listan över kolumner, deras typer, egenskaper, beskrivningar och kolumnbegränsningar.
Om du inte definierar kolumner i tabellschemat måste du ange antingen
AS queryellerLOCATION.- 
Ett unikt namn för kolumnen.
Kolumnidentifierare för Delta-tabeller utan kolumnmappningsegenskap (
'delta.columnMapping.mode' = 'name') får inte innehålla blanksteg eller följande tecken:, ; { } ( ) \n \t =.Kolumnidentifierare för
AVROtabeller måste börja med ett understreck (_) eller en Unicode-bokstav (inklusive icke-ASCII-bokstäver) och följas av en kombination av Unicode-bokstäver, siffror och understreck.Kolumnidentifierare för
ICEBERGtabeller måste vara unika, skiftlägesokänsliga och följa standardreglerna för SQL-identifierare. Undvik att använda blanksteg eller specialtecken eftersom de kanske inte stöds av alla sökmotorer. - 
Anger kolumnens datatyp. Alla datatyper som stöds av Azure Databricks stöds inte av alla datakällor.
 INTE NULL
Om det anges accepterar
NULLkolumnen inte värden. Den här satsen stöds endast för Delta- och Iceberg-tabeller.KOLLATIONERA kollationsnamn
gäller för:
 Databricks SQL 
 Databricks Runtime 16.1 och senareFör
STRINGcolumn_typekan du välja att namnge sorteringen som ska användas för jämförelse- och sorteringsåtgärder på den här kolumnen. Standardsortering är tabellendefault_collation_name.GENERERAS ALLTID SOM ( uttr )
När du anger den här satsen bestäms värdet för den här kolumnen av den angivna
expr.Tabellens
DEFAULT COLLATIONmåste varaUTF8_BINARY.exprkan bestå av literaler, kolumnidentifierare i tabellen och deterministiska, inbyggda SQL-funktioner eller operatorer förutom:- Mängdfunktioner
 - Analysfönsterfunktioner
 - Funktioner för rangordningsfönster
 - Generatorfunktioner som returnerar tabellvärden
 - Kolumner med en annan teckenkodning än 
UTF8_BINARY 
Får inte heller
exprinnehålla någon underfråga.GENERERAD { ALLTID | SOM STANDARDVÄRDE } SOM IDENTIFIERING [ ( [ STARTA MED start ] [ ÖKA MED steg ] ) ]
Gäller för:
 Databricks SQL 
 Databricks Runtime 10.4 LTS och senareDefinierar en identitetskolumn. När du skriver till tabellen och inte anger värden för identitetskolumnen, kommer den automatiskt att tilldelas ett unikt och statistiskt ökat värde (eller minskat om
stepär negativt). Den här satsen stöds endast för Delta-tabeller. Den här satsen kan endast användas för kolumner med BIGINT-datatyp.De automatiskt tilldelade värdena börjar med
startoch ökar medstep. Tilldelade värden är unika men garanteras inte vara sammanhängande. Båda parametrarna är valfria och standardvärdet är 1.stepkan inte vara0.Om de automatiskt tilldelade värdena ligger utanför intervallet för identitetskolumntypen misslyckas frågan.
När
ALWAYSanvänds kan du inte ange egna värden för identitetskolumnen.Följande åtgärder stöds inte:
- 
              
PARTITIONED BYen identitetskolumn - 
              
UPDATEen identitetskolumn 
Anteckning
Om du deklarerar en identitetskolumn i en tabell inaktiveras samtidiga transaktioner. Använd endast identitetskolumner i användningsfall där samtidiga skrivningar till måltabellen inte krävs.
- 
              
 STANDARD default_expression
Gäller för:
 Databricks SQL 
 Databricks Runtime 11.3 LTS och senareDefinierar ett
DEFAULTvärde för kolumnen som används påINSERT,UPDATEochMERGE ... INSERTnär kolumnen inte har angetts.Om inget standardvärde anges
DEFAULT NULLtillämpas för nullbara kolumner.default_expressionkan bestå av literaler och inbyggda SQL-funktioner eller -operatorer förutom:- Mängdfunktioner
 - Analysfönsterfunktioner
 - Funktioner för rangordningsfönster
 - Generatorfunktioner som returnerar tabellvärden
 
Får inte heller
default_expressioninnehålla någon underfråga.DEFAULTstöds förCSV,JSON,PARQUETochORCkällor.KOMMENTAR column_comment
En textsträng som beskriver kolumnen.
- 
Lägger till en primärnyckelbegränsning eller en utländsk nyckelbegränsning i kolumnen i en tabell.
Begränsningar stöds inte för tabeller i
hive_metastorekatalogen.Om du vill lägga till en kontrollbegränsning i en tabell använder du ALTER TABLE.
 - 
gäller för:
 Databricks SQL 
 Databricks Runtime 12.2 LTS och senare 
 endast Unity CatalogLägger till en kolumnmaskfunktion för att anonymisera känsliga data. Alla efterföljande frågor från den kolumnen får resultatet av utvärderingen av funktionen över kolumnen i stället för kolumnens ursprungliga värde. Detta kan vara användbart för detaljerad åtkomstkontroll där funktionen kan kontrollera identitets- eller gruppmedlemskapen för den anropande användaren för att avgöra om värdet ska redigeras.
Om du ersätter en tabell och den nya tabellen innehåller samma kolumnnamn som originalet behålls alla befintliga kolumnmasker, även om de inte uttryckligen omdefinieras. Detta förhindrar oavsiktlig förlust av dataåtkomstprinciper.
 - 
Lägger till antingen en informerande primärnyckel eller en informerande främmande nyckelbegränsning i tabellen.
Viktiga begränsningar stöds inte för tabeller i
hive_metastorekatalogen.Om du vill lägga till en kontrollbegränsning i en tabell använder du ALTER TABLE.
 
- 
 ANVÄNDNING AV data_source
data_sourcekan vara antingen ett filformat eller en federerad JDBC-datakälla.Filformatet måste vara något av följande:
AVROBINARYFILECSVDELTAICEBERGJSONORCPARQUETTEXT
För varje annat filformat än
DELTAellerICEBERGmåste du ange enLOCATION, såvida inte tabellkatalogen ärhive_metastore.Följande federerade JDBC-källor stöds:
POSTGRESQLSQLSERVERMYSQLBIGQUERYNETSUITEORACLEREDSHIFTSNOWFLAKESQLDWSYNAPSESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB
När du anger en federerad JDBC-källa måste du också ange
OPTIONSsatsen med nödvändig anslutningsinformation. Mer information om hur du frågar federerade datakällor finns i Fråga databaser med JDBC .Följande ytterligare filformat som ska användas för tabellen stöds i Databricks Runtime:
JDBCLIBSVM- ett fullständigt kvalificerat klassnamn för en anpassad implementering av 
org.apache.spark.sql.sources.DataSourceRegister. 
Om
USINGutelämnas ärDELTAstandardvärdet .Följande gäller för: Databricks Runtime
HIVEstöds för att skapa en Hive SerDe-tabell i Databricks Runtime. Du kan ange den Hive-specifikafile_formatochrow_formatgenom att användaOPTIONS-satsen, som är en skiftlägesokänslig strängkarta. Deoption_keysär:FILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
tabellklausuler
Du kan också ange egenskaper för plats, partitionering, klustring, alternativ, kommentarer och användardefinierade egenskaper för den nya tabellen. Varje undersats kan endast anges en gång.
- 
En valfri sats för att partitionera tabellen med en delmängd av kolumner.
Anteckning
För hanterade Iceberg-tabeller stöder Azure Databricks inte
PARTITIONED BY. Använd flytande klustring (CLUSTER BY) för att optimera datalayouten i stället. Om du utelämnar tabelldefinitionen för Delta-tabeller placerar Azure Databricks partitioneringskolumner i slutet av tabellen, även om du listar dem tidigare i kolumnspecifikationen. - 
Gäller för:
 Databricks SQL 
 Databricks Runtime 13.3 och senareEtt valfritt villkor för att klustra en Delta- eller Iceberg-tabell med en delmängd av kolumner. Se Använda flytande klustring för tabeller. Om du vill klustra andra tabeller använder du
clustered_by_clause.För Isbergstabeller måste du uttryckligen inaktivera borttagningsvektorer och rad-ID:t när du använder
CLUSTER BY.Använd automatisk flytande klustring med
CLUSTER BY AUTO, och Databricks väljer intelligent klustringsnycklar för att optimera frågeprestanda.Du kan inte kombinera flytande klustring med
PARTITIONED BY. clustered_by_clause
Du kan också gruppera tabellen eller varje partition till ett fast antal hash-bucketar med hjälp av en delmängd av kolumnerna.
Den här satsen stöds inte för Delta- eller Iceberg-tabeller. Använd
CLUSTER BYi stället.KLUSTRAD AV
Anger vilken uppsättning kolumner som varje partition ska klustras med, eller tabellen om ingen partitionering har angetts.
- 
En identifierare som refererar till en
column_identifieri tabellen. Om du anger fler än en kolumn får det inte finnas några dubbletter. Eftersom en klustring fungerar på partitionsnivå får du inte namnge en partitionskolumn även som en klusterkolumn. 
- 
 SORTERAT EFTER
Du kan också behålla en sorteringsordning för rader i en bucket.
sort_column
En kolumn att sortera bucketen efter. Kolumnen får inte vara partitionskolumn. Sorteringskolumner måste vara unika.
ASC eller DESC
Du kan också ange om
sort_columnsorteras i stigande (ASC) eller fallande (DESC) ordning. Standardvärdena ärASC.
IN I NUM_BUCKETS BUCKETS
En INTEGER-literal som anger antalet bucketar som varje partition (eller tabellen om ingen partitionering anges) delas upp i.
PLATS-sökväg [ MED ( CREDENTIAL credential_name ) ]
En valfri sökväg till katalogen där tabelldata lagras, vilket kan vara en sökväg för distribuerad lagring.
pathmåste vara en STRING-literal. Om du inte anger någon plats betraktas tabellen som enmanaged tableoch Azure Databricks skapar en standardtabellplats.Om du anger en plats blir tabellen en extern tabell.
För tabeller som inte finns i
hive_metastorekatalogen måste tabellenpathskyddas av en extern plats om inte en giltig lagringsautentiseringsuppgift har angetts.Du kan inte skapa externa tabeller på platser som överlappar platsen för hanterade tabeller.
För Delta-tabeller ärver tabellen sin konfiguration från
LOCATIONom data redan finns på den sökvägen. Därför måste alla angivnaTBLPROPERTIES,table_specificationellerPARTITIONED BY-satser exakt matcha befintliga data på Delta-platsen.För Iceberg-tabeller stöds inte
LOCATION-villkoret. Utländska isbergstabeller registreras automatiskt när du skapar en utländsk katalog, och du måste skapa hanterade tabeller utan att ange någon plats.- 
Anger eller återställer ett eller flera användardefinierade tabellalternativ.
 KOMMENTAR table_comment
En textsträng som beskriver tabellen.
- 
Du kan också ange en eller flera användardefinierade egenskaper.
 STANDARDSORTERING default_collation_name
Gäller för:
 Databricks SQL 
 Databricks Runtime 16.3 och senareDefinierar standardsortering som ska användas för:
- 
              
STRINGkolumner och fält i tabellen - 
              
DEFAULTuttryck - Kroppen av 
CREATE TABLE AS query 
CHECKbegränsningar och genererade kolumnuttryck kräver en standardsortering avUTF8_BINARY.Om den inte anges härleds standardsortering från schemat där tabellen skapas.
- 
              
 - 
gäller för:
 Databricks SQL 
 Databricks Runtime 12.2 LTS och senare 
 endast Unity CatalogLägger till en radfilterfunktion i tabellen. Alla efterföljande frågor från tabellen får en delmängd av raderna där funktionen utvärderas till boolesk TRUE. Detta kan vara användbart för detaljerad åtkomstkontroll där funktionen kan kontrollera identitets- eller gruppmedlemskapen för den anropande användaren för att avgöra om vissa rader ska filtreras.
Om du ersätter en tabell behålls alla befintliga radfilter, även om de inte uttryckligen omdefinieras. Detta förhindrar oavsiktlig förlust av dataåtkomstprinciper.
 
- 
 
- 
Den här valfria satsen fyller i tabellen med hjälp av data från
query. När du anger enqueryfår du inte också ange entable_specification. Tabellschemat härleds från frågan.Observera att Azure Databricks skriver över den underliggande datakällan med data i indatafrågan för att se till att tabellen som skapas innehåller exakt samma data som indatafrågan.
 
Exempel
-- Creates a Delta table
> CREATE TABLE student (id INT, name STRING, age INT);
-- Creates a managed Iceberg table
> CREATE TABLE edu.enrollment.student (id INT, name STRING, age INT) USING ICEBERG;
-- Use data from another table
> CREATE TABLE student_copy AS SELECT * FROM student;
-- Creates a CSV table from an external directory
> CREATE TABLE student USING CSV LOCATION '/path/to/csv_files';
-- Specify table comment and properties
> CREATE TABLE student (id INT, name STRING, age INT)
    COMMENT 'this is a comment'
    TBLPROPERTIES ('foo'='bar');
-- Specify table comment and properties with different clauses order
> CREATE TABLE student (id INT, name STRING, age INT)
    TBLPROPERTIES ('foo'='bar')
    COMMENT 'this is a comment';
-- Create partitioned table
> CREATE TABLE student (id INT, name STRING, age INT)
    PARTITIONED BY (age);
-- Create a table with a generated column
> CREATE TABLE rectangles(a INT, b INT,
                          area INT GENERATED ALWAYS AS (a * b));
-- Create a table with a string column with a case-insensitive collation.
> CREATE TABLE names(name STRING COLLATE UNICODE_CI);
-- Create a table with a default collation and override for a specific column.
> CREATE TABLE names(name STRING, first_name STRING, id STRING COLLATE UTF8_BINARY) DEFAULT COLLATION UNICODE_CI;
-- Create an external table connected to Oracle
> CREATE TABLE IF NOT EXISTS ora_tab
  USING ORACLE
  OPTIONS (
    url '<jdbc-url>',
    dbtable '<table-name>',
    user '<username>',
    password '<password>'
);
> SELECT * FROM ora_tab;