Я нахожусь в процессе миграции старой унаследованной системы, которая имеет в основном плоские таблицы базы данных со слишком большим количеством столбцов. Каждый новый параметр требует нового столбца и т. Д., Поэтому таблицы становятся невероятно большими. Я пытаюсь изменить эту структуру на реляционную и пытаюсь перенести старые существующие данные в новую структуру. Вот пример старой таблицы:
CREATE TABLE [dbo].[User_OLD](
[Id] [int] IDENTITY(1,1) NOT NULL,
[FullName] [nvarchar](50) NULL,
[Email] [nvarchar](50) NULL,
[Setting1] [bit] NULL,
[Setting1Value] [int] NULL,
[Setting2] [bit] NULL,
[Setting2Value] [int] NULL,
[Setting3] [bit] NULL,
[Setting3Value] [int] NULL,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED ([Id] ASC));
Эта таблица переносится в несколько таблиц, вот пример:
CREATE TABLE [dbo].[User_NEW](
[Id] [int] IDENTITY(1,1) NOT NULL,
[FullName] [nvarchar](50) NULL,
[Email] [nvarchar](50) NULL,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED ([Id] ASC));
CREATE TABLE [dbo].[UserSetting](
[Id] [int] IDENTITY(1,1) NOT NULL,
[UserId] [int] NOT NULL,
[SettingName] [varchar](250) NOT NULL,
[SettingValue] [varchar](250) NOT NULL,
[CreatedOn] [datetime] NOT NULL,
CONSTRAINT [PK_UserSetting] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT FK_UserSetting_User FOREIGN KEY ([UserId]) REFERENCES User_NEW(Id));
Итак, проблема в том, что мне нужно взять запись из User_OLD и вставить ее значения в User_NEW, затем мне нужно взять User_NEW.Id и вставить его в таблицу UserSetting с соответствующим Setting1, Setting1Value, переходящим в новые таблицы. столбцы SettingName и SettingValue.
Если бы вы могли помочь мне с сценарием, который мог бы достичь этого, я был бы очень признателен!