SQL Server --> MySQL 1. 表的迁移

sqlserver迁移到mysql  在数据库方面的工作主要是表的迁移,以及存储过程的迁移,这里先说说表的迁移.

首 先先将MSSQL Server表结构导出为.sql文件. 表迁移,mysql一律不能运行带有[,],dbo.等带有sqlserver特征的脚步, 所以在导出的sqlserver脚步里面,首先要把这些字符全部过滤掉(可使用editplus进行过滤),在表创建方面的不支持的字符如下:[,], [dbo].,GO, on primary,.

在过滤完以上的字符后, 由于导出的sql文件都包含多个表, 为了能够一次性装载完所有的scripts并运行,需要在每个表的create语句后面加上分号, (同时还有加上ENGINE=InnoDB),否则你会发现只能一个一个表的进行运行,比如原来是这样:

CREATE TABLE bmapnamebidsg (
 bword nvarchar (100)  NOT NULL ,
 bids text  NULL ,
 status int NOT NULL ,
 cr_date datetime NOT NULL
)


CREATE TABLE BookStaticSortStatus (
 sid int NOT NULL ,
 sortStatus int NOT NULL ,
 mxReviewStatus int NOT NULL ,
 lReviewStatus int NOT NULL ,
 up_date datetime NOT NULL
)

改动后是这样的:

CREATE TABLE bmapnamebidsg (
 bword nvarchar (100)  NOT NULL ,
 bids text  NULL ,
 status int NOT NULL ,
 cr_date datetime NOT NULL
)ENGINE=InnoDB ;


CREATE TABLE BookStaticSortStatus (
 sid int NOT NULL ,
 sortStatus int NOT NULL ,
 mxReviewStatus int NOT NULL ,
 lReviewStatus int NOT NULL ,
 up_date datetime NOT NULL
)ENGINE=InnoDB ;

接下来就是数据类型了!

在 数据类型方面,mysql基本对应了sqlserver的数据类型, 向bit,text,varchar,等,都对应得比较好, 但是,mysql并不支持smalldatetime(这个是sqlserver特有的),需要转成timestamp,另外, sqlserver中的identity自增长属性在mysql中则表现为auto_increament属性,并且声明该属性的列必须是key!

最后我们看看主键,索引以及缺省值如何对应,一些是MS SQLServer(建一个主键,为两个字段定义缺省值,再为一个字段定义成索引):

ALTER TABLE BookStaticSortStatus WITH NOCHECK ADD
 CONSTRAINT PK_BookStaticSortStatus PRIMARY KEY  CLUSTERED
 (
  sid
 )

ALTER TABLE BookStaticSortStatus ADD
 CONSTRAINT DF_BookStaticSortStatus_status DEFAULT ((-1)) FOR sortStatus,
 CONSTRAINT DF_BookStaticSortStatus_up_date DEFAULT (getdate()) FOR up_date


 CREATE  INDEX [sort2_books] ON [dbo].[books]([s2id]) ON [PRIMARY]

MySQL:

CREATE TABLE `bmapnamebidsg` (
  `bword` varchar(100) character set utf8 NOT NULL default '1',
  `bids` text NOT NULL,
  `status` int(11) NOT NULL,
  `cr_date` datetime NOT NULL,
  PRIMARY KEY  (`bword`),
  KEY `bids` (`bids`(1))
) ENGINE=InnoDB DEFAULT CHARSET=latin1

完成以上动作,表结构的迁移就基本完成了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值