Creare e modificare tabelle esterne SQL

Crea o modifica una tabella esterna SQL nel database in cui viene eseguito il comando.

Nota

  • Se la tabella esiste, il .create comando avrà esito negativo con un errore. Usare .create-or-alter o .alter modificare le tabelle esistenti.
  • La modifica dello schema di una tabella SQL esterna non è supportata.

Tipi di tabella esterna SQL supportati

  1. Microsoft SQL Server
  2. MySQL
  3. PostgreSQL
  4. Cosmos DB

Autorizzazioni

Per .create richiedere almeno le autorizzazioni utente del database e .alter per richiedere almeno autorizzazioni di tabella Amministrazione.

Per .create-or-alter una tabella esterna tramite l'autenticazione dell'identità gestita sono necessarie autorizzazioni AllDatabasesAdmin . Attualmente, questo è rilevante solo per Microsoft SQL Server tabelle esterne.

Sintassi

(.create.create-or-alter | .alter | ) externaltableSchema)=kindsqlTableName[ SqlTableName( ] SqlConnectionString) [withtable(sqlDialect== [ SqlDialect ] ,( [ Property, ... ]])

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
TableName string ✔️ Nome della tabella esterna. Il nome deve seguire le regole per i nomi di entità e una tabella esterna non può avere lo stesso nome di una tabella regolare nello stesso database.
Schema string ✔️ Lo schema dei dati esterni è un elenco delimitato da virgole di uno o più nomi di colonne e tipi di dati, in cui ogni elemento segue il formato: ColumnName:ColumnType.
SqlTableName string Nome della tabella SQL non incluso il nome del database. Ad esempio, "MySqlTable" e non "db1. MySqlTable". Se il nome della tabella contiene un punto ("."), usare la notazione

['Name.of.the.table'].Questa specifica è necessaria per tutti i tipi di tabelle, ad eccezione di Cosmos DB, come per Cosmos DB, il nome della raccolta fa parte del stringa di connessione.
Sqlconnectionstring string ✔️ Stringa di connessione al server SQL.
SqlDialect string Indica il tipo di tabella esterna SQL. Microsoft SQL Server è il valore predefinito. Per MySQL specificare MySQL. Per PostgreSQL specificare PostgreSQL. Per Cosmos DB specificare CosmosDbSql.
Proprietà string Coppia di proprietà key-value nel formato PropertyName=PropertyValue. Vedere proprietà facoltative.

Avviso

Le stringhe di connessione e le query che includono informazioni riservate devono essere offuscate in modo che vengano omesse da qualsiasi traccia Kusto. Per altre informazioni, vedere valori letterali stringa offuscati.

Proprietà facoltative

Proprietà Type Descrizione
folder string Cartella della tabella.
docString string Stringa che documenta la tabella.
firetriggers true/false Se true, indica al sistema di destinazione di generare trigger INSERT definiti nella tabella SQL. Il valore predefinito è false. Per altre informazioni, vedere BULK INSERT e System.Data.SqlClient.SqlBulkCopy)
createifnotexists true/ false Se true, la tabella SQL di destinazione verrà creata se non esiste già. La primarykey proprietà deve essere fornita in questo caso per indicare la colonna risultato che è la chiave primaria. Il valore predefinito è false.
primarykey string Se createifnotexists è true, il nome della colonna risultante verrà usato come chiave primaria della tabella SQL se viene creata da questo comando.

Autenticazione e autorizzazione

Per interagire con una tabella SQL esterna da Azure Esplora dati, è necessario specificare i mezzi di autenticazione come parte di SqlConnectionString. SqlConnectionString definisce la risorsa per accedere alle informazioni di autenticazione e alle relative informazioni di autenticazione.

Per altre informazioni, vedere Metodi di autenticazione della tabella esterna SQL.

Nota

Se la tabella esterna viene usata per l'esportazione continua, l'autenticazione deve essere eseguita tramite nome utente/password o identità gestite.

Esempio

Negli esempi seguenti viene illustrato come creare ogni tipo di tabella esterna SQL.

SQL Server

.create external table MySqlExternalTable (x:long, s:string) 
kind=sql
table=MySqlTable
( 
   h@'Server=tcp:myserver.database.windows.net,1433;Authentication=Active Directory Integrated;Initial Catalog=mydatabase;'
)
with 
(
   docstring = "Docs",
   folder = "ExternalTables", 
   createifnotexists = true,
   primarykey = x,
   firetriggers=true
)  

Output

TableName TableType Cartella DocString Proprietà
MySqlExternalTable Sql ExternalTables Docs {
"TargetEntityKind": "sqltable'",
"TargetEntityName": "MySqlTable",
"TargetEntityConnectionString": "Server=tcp:myserver.database.windows.net,1433; Authentication=Active Directory Integrated; Catalogo iniziale=mydatabase;",
"FireTriggers": true,
"CreateIfNotExists": true,
"PrimaryKey": "x"
}

MySQL

.create external table MySqlExternalTable (x:long, s:string) 
kind=sql
table=MySqlTable
( 
   h@'Server=myserver.mysql.database.windows.net;Port = 3306;UID = USERNAME;Pwd = PASSWORD;Database = mydatabase;'
)
with 
(
   sqlDialect = "MySql",
   docstring = "Docs",
   folder = "ExternalTables", 
)  

PostgreSQL

.create external table PostgreSqlExternalTable (x:long, s:string) 
kind=sql
table=PostgreSqlTable
( 
   h@'Host = hostname.postgres.database.azure.com; Port = 5432; Database= db; User Id=user; Password=pass; Timeout = 30;'
)
with 
(
   sqlDialect = "PostgreSQL",
   docstring = "Docs",
   folder = "ExternalTables", 
)  

Cosmos DB

.create external table CosmosDBSQLExternalTable (x:long, s:string) 
kind=sql
( 
   h@'AccountEndpoint=https://cosmosdbacc.documents.azure.com/;Database=MyDatabase;Collection=MyCollection;AccountKey=' h'R8PM...;'
)
with 
(
   sqlDialect = "CosmosDbSQL",
   docstring = "Docs",
   folder = "ExternalTables", 
)