SQL 외부 테이블 만들기 및 변경

명령이 실행되는 데이터베이스에서 SQL 외부 테이블을 만들거나 변경합니다.

참고

  • 테이블이 있는 .create 경우 오류와 함께 명령이 실패합니다. 또는 .alter 를 사용하여 .create-or-alter 기존 테이블을 수정합니다.
  • 외부 SQL 테이블의 스키마 변경은 지원되지 않습니다.

지원되는 SQL 외부 테이블 형식

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

사용 권한

.create 데이터베이스 사용자 권한이 필요하고 .alter 테이블 관리 이상의 권한이 필요합니다.

관리 ID 인증을 사용하는 외부 테이블에는 .create-or-alterAllDatabasesAdmin 권한이 필요합니다. 현재 Microsoft SQL Server 외부 테이블과만 관련이 있습니다.

Syntax

(.create.alter | .create-or-alter | ) externaltableTableName(스키마)sqlkind= [ table=SqlTableName ] (SqlConnectionString) [ [ sqlDialectwith(=SqlDialect ] , [ Property, ... ])]

구문 규칙에 대해 자세히 알아봅니다.

매개 변수

이름 형식 필수 Description
TableName string ✔️ 외부 테이블의 이름입니다. 이름은 엔터티 이름에 대한 규칙을 따라야 하며 외부 테이블은 동일한 데이터베이스의 일반 테이블과 동일한 이름을 가질 수 없습니다.
스키마 string ✔️ 외부 데이터 스키마는 하나 이상의 열 이름 및 데이터 형식의 쉼표로 구분된 목록으로, 각 항목은 ColumnName ColumnType 형식을: 따릅니다.
SqlTableName string 데이터베이스 이름을 포함하지 않는 SQL 테이블의 이름입니다. 예를 들어 "MySqlTable"이고 "db1"이 아닙니다. MySqlTable". 테이블 이름에 마침표(".")가 포함된 경우 ['Name.of.the.table'] 표기법을 사용합니다.

Cosmos DB의 경우 컬렉션 이름이 연결 문자열 일부이므로 Cosmos DB를 제외한 모든 유형의 테이블에 이 사양이 필요합니다.
SqlConnectionString string ✔️ SQL 서버에 대한 연결 문자열.
SqlDialect string SQL 외부 테이블의 형식을 나타냅니다. Microsoft SQL Server 기본값입니다. MySQL에 를 지정합니다 MySQL. PostgreSQL에 를 지정합니다 PostgreSQL. Cosmos DB의 경우 를 지정합니다 CosmosDbSql.
속성 string PropertyName PropertyValue= 형식의 키-값속성 쌍입니다. 선택적 속성을 참조하세요.

경고

기밀 정보를 포함하는 연결 문자열 및 쿼리는 Kusto 추적에서 생략되도록 난독 처리되어야 합니다. 자세한 내용은 난독 처리를 한 문자열 리터럴을 참조하세요.

선택적 속성

속성 형식 Description
folder string 테이블의 폴더입니다.
docString string 테이블을 문서화하는 문자열입니다.
firetriggers true/false 이면 trueSQL 테이블에 정의된 INSERT 트리거를 실행하도록 대상 시스템에 지시합니다. 기본값은 false입니다. 자세한 내용은 BULK INSERTSystem.Data.SqlClient.SqlBulkCopy를 참조하세요.
createifnotexists true/ false 이면 true대상 SQL 테이블이 아직 없는 primarykey 경우 만들어집니다. 기본 키인 결과 열을 나타내려면 이 경우 속성을 제공해야 합니다. 기본값은 false입니다.
primarykey string 가 이truecreateifnotexists 결과 열 이름이 이 명령에 의해 만들어진 경우 SQL 테이블의 기본 키로 사용됩니다.

인증 및 권한 부여

Azure Data Explorer 외부 SQL 테이블과 상호 작용하려면 인증 수단을 SqlConnectionString의 일부로 지정해야 합니다. SqlConnectionString은 액세스할 리소스와 해당 인증 정보를 정의합니다.

자세한 내용은 SQL 외부 테이블 인증 방법을 참조하세요.

참고

외부 테이블이 연속 내보내기를 위해 사용되는 경우 사용자 이름/암호 또는 관리 ID로 인증을 수행해야 합니다.

예제

다음 예제에서는 각 유형의 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
)  

출력

TableName TableType 폴더 DocString 속성
MySqlExternalTable Sql ExternalTables Docs {
"TargetEntityKind": "sqltable",
"TargetEntityName": "MySqlTable",
"TargetEntityConnectionString": "Server=tcp:myserver.database.windows.net,1433; Authentication=Active Directory 통합; 초기 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", 
)