如何将一个模式移动到另一个具有不同字段的模式?

时间:2015-11-16 16:12:36

标签: mysql sql sql-server

我创建了一个应用程序来替换我们暂时使用的旧应用程序,我需要将旧数据库记录移动到新系统中,但模式不一样。我想知道是否有办法将旧架构移动到新架构中,忽略了新表中不存在的字段,并移动了已更改为更新版本的字段。

我的旧架构是Microsoft SQL Server,它包含以下字段:

[req_id] [int] IDENTITY(1,1) NOT NULL,
[req_user_id] [nvarchar](50) NOT NULL,
[req_subject] [nvarchar](200) NOT NULL,
[req_details] [nvarchar](4000) NOT NULL,
[req_request_date] [date] NOT NULL,
[req_year] [smallint] NOT NULL,
[req_expect_date] [date] NOT NULL,
[leader] [nvarchar](10) NULL,
[member1] [nvarchar](10) NULL,
[member2] [nvarchar](10) NULL,
[member3] [nvarchar](10) NULL,
[member4] [nvarchar](10) NULL,
[member5] [nvarchar](10) NULL,
[member6] [nvarchar](10) NULL,
[status_code] [nvarchar](10) NULL,
[hours_used] [int] NULL,
[completed_date] [date] NULL,
[category_code] [nvarchar](10) NULL,
[staff_comments] [nvarchar](2000) NULL,
[response_Email] [bit] NOT NULL,
[response_Phone] [bit] NOT NULL,
[response_Fax] [bit] NOT NULL,
[response_online_upload] [bit] NOT NULL,
[response_post_mail] [bit] NOT NULL,
[response_file] [bit] NOT NULL,
[response_pickup] [bit] NOT NULL,

我的新架构是MySQL,看起来像这样:

  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `userid` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `subject` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
  `details` text COLLATE utf8_unicode_ci NOT NULL,
  `eta` date NOT NULL,
  `leader` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `member1` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `member2` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `member3` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `member4` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `member5` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `member6` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `status` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `time_spent` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `date_completed` date DEFAULT NULL,
  `category` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `comments` text COLLATE utf8_unicode_ci,
  `response_method` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

有没有办法做到这一点并在新系统中挽救我们的旧记录?

1 个答案:

答案 0 :(得分:0)

我使用数据导出工具生成xlsx文件,然后使用Navicat将其作为新表导入数据库,然后使用简单的insert语句将数据移动到另一个表。我对此问题得到的答复感到震惊,但我很高兴我自己找到了解决方案。