在 SQL 服务器数据仓库上创建外部表时避免名称冲突

Avoiding name collisions when creating external tables on SQL Server datawarehouse

我正在尝试使用 Polybase 将数据库 AdventureWorks 迁移到 SQL 服务器数据仓库。

假设我有一个架构 HumanResources 和一个 table Department 在该架构中。

CREATE TABLE [HumanResources].[Department]
(
    [DepartmentID] [smallint] NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
    [ModifiedDate] [datetime] NOT NULL
)

在将数据从 Azure blob 加载到 SQL 服务器数据仓库之前,我需要为 [HumanResources].[Department] 的数据创建一个外部 table。

CREATE EXTERNAL TABLE ex.TableName 
(
    [DepartmentID] [smallint] NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
    [ModifiedDate] [datetime] NOT NULL
)
WITH (
    LOCATION='/path/',
    DATA_SOURCE=AzureStorage,
    FILE_FORMAT=TextFile
);

我正在 [ex] 模式下创建所有外部 table,我应该如何表示原始模式以避免冲突。

我做不到 [ex].[HumanResources].[Department],我想避免为外部 table 创建不必要的模式。

有没有简单的表示方法?

我们看到的一种常见模式是简单地将 _ext 添加到 table 名称的末尾。因此,按照您的示例,您将拥有以下内容:

[人力资源].[部门] [人力资源].[Department_ext]