Azure Synapse 中的外部 table 列不允许 NOT NULL
NOT NULL is not allowed for external table columns in Azure Synapase
我正在 Azure Synapse 中创建外部 table。我的数据采用镶木地板格式,位于数据湖中。
正在创建一个名为“test”的 table
IF NOT EXISTS (SELECT * FROM sys.external_file_formats WHERE name = 'SynapseParquetFormat')
CREATE EXTERNAL FILE FORMAT [SynapseParquetFormat]
WITH ( FORMAT_TYPE = PARQUET)
GO
IF NOT EXISTS (SELECT * FROM sys.external_data_sources WHERE name = 'sandboxs2345_dfs_core_windows_net')
CREATE EXTERNAL DATA SOURCE [sandboxs2345_dfs_core_windows_net]
WITH (
LOCATION = 'abfss://jobsnumber@sandboxs2345.dfs.core.windows.net'
)
GO
CREATE EXTERNAL TABLE [test] (
[Name] nvarchar(4000),
[JobNo] nvarchar(4000) PRIMARY KEY
)
WITH (
LOCATION = 'New/update.parquet',
DATA_SOURCE = [sandboxs2345_dfs_core_windows_net],
FILE_FORMAT = [SynapseParquetFormat]
)
GO
SELECT TOP 100 * FROM [dbo].[test]
GO
我有两列名称和职位编号。我想让 JobNo 成为主键。当我尝试 运行 上述查询
时出现以下错误
NOT NULL is not allowed for external table columns.
谁能告诉我问题出在哪里?
在 Azure Synapse 中,用于创建主键我们应该将其称为 NONCLUSTERED
和 NOT ENFORCED
。
要了解有关 Table Synapse 约束的更多信息,请参阅:
请按照此 link 创建外部文件的步骤
Table 在 Synapse 中。
https://dwgeek.com/create-external-tables-in-azure-synapse-analytics.html/
按照上面link的步骤,我们可以这样创建主键。
create EXTERNAL TABLE external_table_name
(
[column1] varchar(100) primary key NONCLUSTERED NOT ENFORCED,
[column2] integer,
[column3] integer,
[column4] integer
)
WITH (
LOCATION='/Datasets/data.csv',
DATA_SOURCE = external_source_name,
FILE_FORMAT = external_file_format_name
);
以防万一,如果上面的方法不起作用,我建议你通过这个:
我正在 Azure Synapse 中创建外部 table。我的数据采用镶木地板格式,位于数据湖中。
正在创建一个名为“test”的 table
IF NOT EXISTS (SELECT * FROM sys.external_file_formats WHERE name = 'SynapseParquetFormat')
CREATE EXTERNAL FILE FORMAT [SynapseParquetFormat]
WITH ( FORMAT_TYPE = PARQUET)
GO
IF NOT EXISTS (SELECT * FROM sys.external_data_sources WHERE name = 'sandboxs2345_dfs_core_windows_net')
CREATE EXTERNAL DATA SOURCE [sandboxs2345_dfs_core_windows_net]
WITH (
LOCATION = 'abfss://jobsnumber@sandboxs2345.dfs.core.windows.net'
)
GO
CREATE EXTERNAL TABLE [test] (
[Name] nvarchar(4000),
[JobNo] nvarchar(4000) PRIMARY KEY
)
WITH (
LOCATION = 'New/update.parquet',
DATA_SOURCE = [sandboxs2345_dfs_core_windows_net],
FILE_FORMAT = [SynapseParquetFormat]
)
GO
SELECT TOP 100 * FROM [dbo].[test]
GO
我有两列名称和职位编号。我想让 JobNo 成为主键。当我尝试 运行 上述查询
时出现以下错误NOT NULL is not allowed for external table columns.
谁能告诉我问题出在哪里?
在 Azure Synapse 中,用于创建主键我们应该将其称为 NONCLUSTERED
和 NOT ENFORCED
。
要了解有关 Table Synapse 约束的更多信息,请参阅:
请按照此 link 创建外部文件的步骤 Table 在 Synapse 中。
https://dwgeek.com/create-external-tables-in-azure-synapse-analytics.html/
按照上面link的步骤,我们可以这样创建主键。
create EXTERNAL TABLE external_table_name
(
[column1] varchar(100) primary key NONCLUSTERED NOT ENFORCED,
[column2] integer,
[column3] integer,
[column4] integer
)
WITH (
LOCATION='/Datasets/data.csv',
DATA_SOURCE = external_source_name,
FILE_FORMAT = external_file_format_name
);
以防万一,如果上面的方法不起作用,我建议你通过这个: