Compartir vía


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

Crea o modifica una tabla externa de Azure 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 externa de Azure SQL.

Tipos de tabla externa de Azure SQL admitidos

  1. 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 administrador de tablas.

Para .create, .altero .create-or-alter una tabla externa mediante la autenticación de identidad administrada requiere permisos de administrador de base de datos. Este método es compatible con las tablas externas de SQL Server y Cosmos DB.

Sintaxis

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

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

Parámetros

Nombre Type Obligatorio 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 más 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 Azure SQL. SQL Server es el valor predeterminado. En MySQL, especifique MySQL. En PostgreSQL, especifique PostgreSQL. En Cosmos DB, especifique CosmosDbSql.
Propiedad string 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, consulte BULK INSERT y System.Data.SqlClient.SqlBulkCopy)
createifnotexists true/ false Si truees , la tabla SQL de destino se crea si aún no existe; la primarykey propiedad debe proporcionarse en este caso para indicar la columna de resultado que es la clave principal. El valor predeterminado es false.
primarykey string Si createifnotexists es true, el nombre de columna resultante se usa como clave principal de la tabla SQL si este comando lo crea.

Autenticación y autorización

Para interactuar con una tabla externa de Azure SQL desde 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 Azure SQL.

Nota:

Si la tabla externa se usa para la exportación continua, la autenticación debe realizarse 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 Azure 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", 
)