【发布时间】:2019-03-26 13:38:05
【问题描述】:
我正在迁移一个旧的遗留系统,该系统大部分是平面数据库表,列太多。每个新设置都需要一个新列等,因此表格变得非常大。我正在尝试将此结构更改为关系结构,并且正在努力将旧的现有数据迁移到新结构中。这是我们拥有的旧表的示例:
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。
如果你能帮助我编写一个可以实现的脚本,我将非常感激!
【问题讨论】:
-
如果你想在这个问题上找到我的“granadacoder”答案的话:stackoverflow.com/questions/17662432/…
标签: sql sql-server ssms