Creación y modificación de tablas externas de SQL

Crea o modifica una tabla externa de SQL en la base de datos en la que se ejecuta el comando.

Nota

  • Si la tabla existe, se producirá un error en el .create comando. Use .create-or-alter o .alter para modificar las tablas existentes.
  • No se admite la modificación del esquema de una tabla SQL externa.

Tipos de tabla externa de SQL admitidos

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

Permisos

Para .create requerir al menos permisos de usuario de base de datos y para .alter requerir al menos permisos de Table Administración.

Para .create-or-alter una tabla externa mediante la autenticación de identidad administrada, se requieren permisos AllDatabasesAdmin . Actualmente, esto solo es relevante para Las tablas externas de Microsoft SQL Server.

Syntax

(.create.alter | .create-or-alter | ) externaltableEsquema)kind=sqlTableName( [ table=SqlTableName ] (SqlConnectionString) [with( [ sqlDialect=SqlDialect ] , [ Propiedad, ... ])]

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Requerido Descripción
TableName string ✔️ Nombre de la tabla externa. El nombre debe seguir las reglas para los nombres de entidad y una tabla externa no puede tener el mismo nombre que una tabla normal en la misma base de datos.
Esquema string ✔️ El esquema de datos externos es una lista separada por comas de uno o varios nombres de columna y tipos de datos, donde cada elemento sigue el formato: ColumnName:ColumnType.
SqlTableName string Nombre de la tabla SQL que no incluye el nombre de la base de datos. Por ejemplo, "MySqlTable" y no "db1". MySqlTable". Si el nombre de la tabla contiene un punto ("."), use la notación

['Name.of.the.table'].Esta especificación es necesaria para todos los tipos de tablas excepto para Cosmos DB, ya que para Cosmos DB el nombre de la colección forma parte del cadena de conexión.
SqlConnectionString string ✔️ El cadena de conexión al servidor SQL Server.
SqlDialect string Indica el tipo de tabla externa de SQL. Microsoft SQL Server es el valor predeterminado. En MySQL, especifique MySQL. En PostgreSQL, especifique PostgreSQL. En Cosmos DB, especifique CosmosDbSql.
Propiedad string Un par de propiedades clave-valor con el formato PropertyName=PropertyValue. Consulte las propiedades opcionales.

Advertencia

Las cadenas de conexión y las consultas que incluyen información confidencial deben ofuscarse para que se omitan de cualquier seguimiento de Kusto. Para obtener más información, consulte literales de cadena ofuscados.

Propiedades opcionales

Propiedad Tipo Descripción
folder string Carpeta de la tabla.
docString string Cadena que documenta la tabla.
firetriggers true/false Si truees , indica al sistema de destino que active los desencadenadores INSERT definidos en la tabla SQL. El valor predeterminado es false. (Para obtener más información, vea BULK INSERT y System.Data.SqlClient.SqlBulkCopy)
createifnotexists true/ false Si truees , se creará la tabla SQL de destino si aún no existe; la primarykey propiedad debe proporcionarse en este caso para indicar la columna de resultados que es la clave principal. El valor predeterminado es false.
primarykey string Si createifnotexists es true, el nombre de columna resultante se usará como clave principal de la tabla SQL si este comando lo crea.

Autenticación y autorización

Para interactuar con una tabla SQL externa de Azure Data Explorer, debe especificar los medios de autenticación como parte de SqlConnectionString. SqlConnectionString define el recurso para acceder a y su información de autenticación.

Para más información, consulte Métodos de autenticación de tablas externas de SQL.

Nota

Si la tabla externa se usa para la exportación continua, la autenticación se debe realizar mediante el nombre de usuario o la contraseña o las identidades administradas.

Ejemplos

En los ejemplos siguientes se muestra cómo crear cada tipo de tabla externa de 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
)  

Salida

TableName TableType Carpeta DocString Propiedades
MySqlExternalTable Sql ExternalTables Docs {
"TargetEntityKind": "sqltable'",
"TargetEntityName": "MySqlTable",
"TargetEntityConnectionString": "Server=tcp:myserver.database.windows.net,1433; Authentication=Active Directory Integrated; Initial Catalog=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", 
)