Я работаю над процессом ETL, который вставляет новые данные и обновляет измененные данные из промежуточной таблицы в таблицу измерений в базе данных SQL Server.
Я настроил таблицу в SQL Server так, чтобы она выглядела так:
CREATE TABLE [schema].[dim_learning_activity](
[dim_learning_activity_id] [bigint] IDENTITY(1,1) NOT NULL,
[activity_fk] [bigint] NOT NULL,
[name] [nvarchar](500) NOT NULL,
[code] [nvarchar](500) NULL,
[description] [nvarchar](500) NULL,
[label] [nvarchar](500) NULL,
[date_last_update] [date] NULL,
[start_date] [date] NULL,
[end_date] [date] NULL,
[active] [int] NULL,
[est_cred_hours] [float] NULL,
[ConType_Name] [nvarchar](500) NULL,
[Txt1] [nvarchar](500) NULL,
[TechnicalCourse] [nvarchar](500) NULL,
[TechnicalCourseCategory] [nvarchar](500) NULL,
[CreationDt] [date] NULL,
CONSTRAINT [PK_dim_learning_activity_id] PRIMARY KEY CLUSTERED
(
[dim_learning_activity_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_dim_learning_activity] UNIQUE NONCLUSTERED
(
[activity_fk] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Где вы можете увидеть dim_learning_activity_id - это первичный ключ.
Ниже приведены настройки, которые у меня есть в настоящее время в Talend:
Файл, который выводит Talend, имеет правильный формат (столбцы, разделенные «%%» и строки «\ n»):
5458%%108129%%Learning Item Name%%108129%%%%Curriculum%%2018-05-11%%%%%%1%%0.5%%Products (Technical Content)%%Technical%%Technical%%Delta%%2018-05-11
Что равняется:
dim_learning_activity_id = 5458
activity_fk = 108129
name = Learning Item Name
code = 108129
description = null
label = Curriculum
date_last_update = 2018-05-11
start_date = null
end_date = null
active = 1
est_cred_hours = 0.5
ConType_Name = Products (Technical Content)
Txt1 = Technical
TechnicalCourse = Technical
TechnicalCourseCategory = Delta
CreationDt = 2018-05-11
Запись уже находится в таблице измерений, но она не будет обновляться с помощью Talend tMSSQLBulkExec с выбранным параметром «Массовое обновление».
Я попытался полностью стереть таблицу и начать с нее с нуля, и все еще получаю эту ошибку, даже при новом запуске задания, когда таблица пуста и все, что она делает, это вставляет, ошибки обновления выводятся вместе с та же ошибка.
Я также попытался обновить файл activity_fk (идентификатор системы записи), что приводит к той же ошибке.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.