如何从 SSIS 中的源列输入创建新行?
How can I create new rows from source column input in SSIS?
我的源数据如下所示:
CREATE TABLE [dbo].[exampleSource](
[PK] [uniqueidentifier] NOT NULL,
[Name] [varchar](200) NULL,
[RelatedCodes] [varchar](max) NULL,
CONSTRAINT [PK_exampleSource] PRIMARY KEY CLUSTERED
(
[PK] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
INSERT [dbo].[exampleSource] ([PK], [Name], [RelatedCodes]) VALUES (N'83ce3647-469d-e211-892f-001321b3540c', N'Promo1', NULL)
GO
INSERT [dbo].[exampleSource] ([PK], [Name], [RelatedCodes]) VALUES (N'02641b86-0564-e211-8dd3-001321b3540c', N'Promo2', N'NA')
GO
INSERT [dbo].[exampleSource] ([PK], [Name], [RelatedCodes]) VALUES (N'8d51fcd8-eae7-e111-a266-001321b3540c', N'Promo3', N'Code1;Code2')
GO
INSERT [dbo].[exampleSource] ([PK], [Name], [RelatedCodes]) VALUES (N'e9a37ae1-eae7-e111-a266-001321b3540c', N'Promo4', N'Code3;Code4')
GO
INSERT [dbo].[exampleSource] ([PK], [Name], [RelatedCodes]) VALUES (N'21702ee0-fc2f-e211-a5fd-001321b3540c', N'Promo5', N'Code5;Code6;Code7;Code8')
GO
列出的代码是我数据仓库中另一个table中的PK,所以我想用这个源创建一个桥table..
我知道我可以在 SSIS 中使用 TOKEN 将值(如 RelatedCodes 中的值)拆分为列。但是我如何创建新行?
您可以使用 SQL(不需要 SSIS 转换)SPLIT_STRING() 函数和交叉应用来实现。示例可以参考以下官方文档:
我的源数据如下所示:
CREATE TABLE [dbo].[exampleSource](
[PK] [uniqueidentifier] NOT NULL,
[Name] [varchar](200) NULL,
[RelatedCodes] [varchar](max) NULL,
CONSTRAINT [PK_exampleSource] PRIMARY KEY CLUSTERED
(
[PK] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
INSERT [dbo].[exampleSource] ([PK], [Name], [RelatedCodes]) VALUES (N'83ce3647-469d-e211-892f-001321b3540c', N'Promo1', NULL)
GO
INSERT [dbo].[exampleSource] ([PK], [Name], [RelatedCodes]) VALUES (N'02641b86-0564-e211-8dd3-001321b3540c', N'Promo2', N'NA')
GO
INSERT [dbo].[exampleSource] ([PK], [Name], [RelatedCodes]) VALUES (N'8d51fcd8-eae7-e111-a266-001321b3540c', N'Promo3', N'Code1;Code2')
GO
INSERT [dbo].[exampleSource] ([PK], [Name], [RelatedCodes]) VALUES (N'e9a37ae1-eae7-e111-a266-001321b3540c', N'Promo4', N'Code3;Code4')
GO
INSERT [dbo].[exampleSource] ([PK], [Name], [RelatedCodes]) VALUES (N'21702ee0-fc2f-e211-a5fd-001321b3540c', N'Promo5', N'Code5;Code6;Code7;Code8')
GO
列出的代码是我数据仓库中另一个table中的PK,所以我想用这个源创建一个桥table..
我知道我可以在 SSIS 中使用 TOKEN 将值(如 RelatedCodes 中的值)拆分为列。但是我如何创建新行?
您可以使用 SQL(不需要 SSIS 转换)SPLIT_STRING() 函数和交叉应用来实现。示例可以参考以下官方文档: