Azure SQL の外部テーブルを作成および変更する
コマンドが実行されるデータベースで、Azure SQL 外部テーブル を作成または変更します。
Note
- テーブルが存在する場合、
.create
コマンドは失敗し、エラーが表示されます。 既存のテーブルを変更するには、.create-or-alter
または.alter
を使用します。 - 外部 Azure SQL テーブルのスキーマの変更はサポートされていません。
サポートされている Azure SQL 外部テーブルの種類
- SQL Server
- MySQL
- PostgreSQL
- Cosmos DB
アクセス許可
.create
には、少なくとも Database User アクセス許可が必要であり、.alter
には少なくとも Table 管理者アクセス許可が必要です。
マネージド ID 認証を使用して外部テーブルを .create
、 .alter
、または .create-or-alter
するには、 Database 管理者 アクセス許可が必要です。 このメソッドは、SQL Server および Cosmos DB の外部テーブルでサポートされています。
構文
(.create
| .alter
| .create-or-alter
) external
table
TableName (
Schema)
kind
=
sql
[ table
=
SqlTableName ] (
SqlConnectionString)
[with
(
[ sqlDialect
=
SqlDialect ] ] ,
[ Property ,
... ])
]
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
TableName | string |
✔️ | 外部テーブルの名前。 名前は、 エンティティ名の規則に従う必要があります外部テーブルは、同じデータベース内の通常のテーブルと同じ名前を持つすることはできません。 |
[スキーマ] | string |
✔️ | 外部データ スキーマは、1 つ以上の列名と data 型のコンマ区切りのリストです各項目は次の形式に従います: ColumnName : ColumnType。 |
SqlTableName | string |
データベース名を含まない SQL テーブルの名前。 たとえば、"db1" ではなく "MySqlTable" です。MySqlTable"。 テーブルの名前にピリオド (".") が含まれている場合は、['Name.of.the.table'] 表記を使用します。 | |
この仕様は、Cosmos DB を除くすべての種類のテーブルに必要です。Cosmos DB の場合、コレクション名は接続文字列の一部です。 |
|||
SqlConnectionString | string |
✔️ | SQL サーバーへの接続文字列。 |
SqlDialect | string |
Azure SQL 外部テーブルの種類を示します。 SQL Server が既定です。 MySQL の場合は、 MySQL を指定します。 PostgreSQL の場合は、 PostgreSQL を指定します。 Cosmos DB の場合は、 CosmosDbSql を指定します。 |
|
プロパティ | string |
PropertyName = PropertyValue の形式のキーと値のプロパティのペア。 オプションのプロパティを参照してください。 |
警告
機密情報を含む接続文字列とクエリは、すべての Kusto トレースから除外されるように難読化される必要があります。 詳細については、「難読化文字列リテラル」を参照してください。
省略可能なプロパティ
プロパティ | タイプ | 説明 |
---|---|---|
folder |
string |
テーブル*のフォルダー*。 |
docString |
string |
テーブルをドキュメント化する文字列。 |
firetriggers |
true /false |
true の場合は、ターゲット システムに対して、SQL テーブルで定義されている INSERT トリガーを起動するよう指示します。 既定値は、false です。 (詳細については、BULK INSERT と System.Data.SqlClient.SqlBulkCopy に関するページを参照してください。) |
createifnotexists |
true / false |
true 場合、ターゲット SQL テーブルがまだ存在しない場合は作成されます。この場合、主キーである結果列を示すには、primarykey プロパティを指定する必要があります。 既定値は、false です。 |
primarykey |
string |
createifnotexists がtrue されている場合、このコマンドによって作成された場合、結果の列名が SQL テーブルの主キーとして使用されます。 |
認証と権限承認
外部の Azure SQL テーブルと対話するには、 SqlConnectionString の一部として認証手段を指定する必要があります。 SqlConnectionString は、アクセスするリソースとその認証情報を定義します。
詳細については、「 Azure SQL 外部テーブルの認証方法を参照してください。
Note
外部テーブルを 連続するエクスポートに使用する場合は、ユーザー名/パスワードまたはマネージド ID で認証を実行する必要があります。
例
次の例では、各種類の 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
)
出力
TableName | TableType | フォルダー | DocString | プロパティ |
---|---|---|---|---|
MySqlExternalTable | Sql | ExternalTables | ドキュメント | { "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",
)