一、SQL SERVER与MySQL数据存储的差异
1、SQL SERVER中的datetime,保留到微秒(秒后小数点3位),而mysql仅保留到秒,转换后是否会影响业务,如果影响,需要新增一个字段专门来存储微秒或者毫秒,虽然mysql中没有时间数据类型的精度到达微秒或者毫秒,但是mysql提供对微秒的相关处理函数microsecond、extract跟date_format
2、MySQL使用tinyint代替SQL SERVER的bit
3、自增处理,mysql的自增步长跟增量值是整个实例统一的,不能每个表格动态修改,所以这里在转化的过程中,为auto_increment,根据实例的设置来处理
二、SQL SERVER与MySQL数据类型的对应关系如图
ID | SQL SERVER | MySQL | Description |
1 | bigint | bigint | |
2 | binary | binary | |
3 | bit | tinyint | SQL SERVER的bit类型,对于零,识别为False,非零值识别为True。 MySQL中没有指定的bool类型,一般都使用tinyint来代替 |
4 | char | char | |
5 | date | date | |
6 | datetime | datetime | 注意,mssql的保留到微秒(秒后小数点3位),而mysql仅保留到秒 |
7 | datetime2 | datetime | 注意,mssql的保留到微秒(秒后小数点7位),而mysql仅保留到秒 |
8 | datetimeoffset | datetime | 注意,mssql的保留时区,这个需要程序自己转换 mssql的保留到微秒(秒后小数点7位),而mysql仅保留到秒 |
9 | decimal | decimal | |
10 | float | float | |
11 | int | int | |
12 | money | float | 默认转换为decimal(19,4) |
13 | nchar | char | SQL SERVER转MySQL按正常字节数转就可以 |
14 | ntext | text | |
15 | numeric | decimal | |
16 | nvarchar | varchar | |
17 | real | float | |
18 | smalldatetime | datetime | |
19 | smallint | smallint | |
20 | smallmoney | float | 默认转换为decimal(10,4) |
21 | text | text | |
22 | time | time | 注意,mssql的保留到秒后小数点8位,而mysql仅保留到秒 |
23 | timestamp | timestamp | |
24 | tinyint | tinyint | |
25 | uniqueidentifier | varchar(40) | 对应mysql的UUID(),设置为文本类型即可。 |
26 | varbinary | varbinary | |
27 | varchar | varchar | |
28 | xml | text | mysql不支持xml,修改为text |
一、SqlServer到MySql的数据类型的转变
编号 | SqlServer | ToMySql | MySql |
1 | binary(50) | LONGBLOB | binary |
2 | bit | CHAR(1) | bit |
3 | char(10) | VARCHAR(10) | char |
4 | date | VARCHAR(10) | date |
5 | datetime | UNKNOWN | datetime |
6 | datetime2(7) | VARCHAR(27) | datetime |
7 | datetimeoffset(7) | VARCHAR(34) | datetime |
8 | decimal(18, 0) | BIGINT | decimal |
9 | float | DOUBLE | float |
10 | nchar(10) | Varchar(10) | nvarchar(10) |
11 | numeric(18, 0) | BIGINT | real |
12 | nvarchar(50) | VARCHAR(50) | nvarchar(50) |
13 | nvarchar(MAX) | MEDIUMTEXT | nvarchar |
14 | real | DOUBLE | real |
15 | smallmoney | DOUBLE | decimal(10,4) |
16 | text | MEDIUMTEXT | text |
17 | time(7) | VARCHAR(16) | time |
18 | timestamp | LONGBLOB | timestamp |
19 | varbinary(50) | LONGBLOB | varbinary |
20 | varbinary(MAX) | LONGBLOB | varbinary |
21 | varchar(MAX) | MEDIUMTEXT | varchar |
22 | uniqueidentifier | VARCHAR(36) | VARCHAR(36) |
23 | geography | LONGBLOB | LONGBLOB |
24 | geometry | LONGBLOB | LONGBLOB |
25 | hierarchyid | LONGBLOB | LONGBLOB |
26 | bigint | BIGINT | bigint |
27 | image | LONGBLOB | longblob |
28 | int | INT | int |
29 | money | DECIMAL(19,4) | decimal(19,4) |
30 | ntext | MEDIUMTEXT | mediumtext |
31 | smalldatetime | DATETIME | datetime |
32 | smallint | INT | int |
33 | sql_variant | TEXT | text |
34 | tinyint | INT | int |
35 | Varchar(50) | VARCHAR(50) | Varchar(50) |
36 | xml | MEDIUMTEXT | mediumtext |
二、MySql到Sqlserver的数据类型的转变
编号 | MySql | ToSqlServer | SqlServer |
1 | DECIMAL/DECIMAL(10) | BIGINT | DECIMAL |
2 | BLOB | VARCHAR(100) | IMAGE |
3 | BLOB(10) | VARCHAR(100) | IMAGE |
4 | BINARY | UNKNOWN | BINARY |
5 | LONGBLOB | VARCHAR(100) | IMAGE |
6 | MEDIUMBLOB | VARCHAR(100) | IMAGE |
7 | TINYBLOB | VARCHAR(100) | IMAGE |
8 | VARBINARY(10) | VARCHAR(100) | VARBINARY |
9 | DATE | DATETIME | DATE |
10 | TIME | DATETIME | TIME |
11 | TIMESTAMP | DATETIME | TIMESTAMP |
12 | YEAR | DATETIME | INT |
13 | DECIMAL(10) | BIGINT | DECIMAL |
14 | DOUBLE | FLOAT(53) | REAL |
15 | REAL | FLOAT(53) | REAL |
16 | CHAR | VARCHAR | CHAR |
17 | NVARCHAR | VARCHAR | NVARCHAR |
18 | TEXT | VARCHAR | TEXT |
19 | TINYTEXT | VARCHAR | TEXT |
20 | BIT | VARCHAR | BIT |
21 | ENUM | VARCHAR | VARCHAR2 |
22 | SET | VARCHAR | VARCHAR2 |
23 | GEOMETRY | UNKNOWN | TEXT |
24 | GEOMETRYCOLLECTION | UNKNOWN | TEXT |
25 | MULTILINESTRING | UNKNOWN | TEXT |
26 | LINESTRING | UNKNOWN | TEXT |
27 | MULTIPOINT | UNKNOWN | TEXT |
28 | MULTIPOLYGON | UNKNOWN | TEXT |
29 | POINT | UNKNOWN | TEXT |
30 | POLYGON | UNKNOWN | TEXT |
31 | INT | INT | INT |
32 | VARCHAR(20) | VARCHAR(20) | VARCHAR(20) |
33 | DATETIME | DATETIME | DATETIME |
34 | DATETIME(6) | DATETIME | DATETIME |
35 | FLOAT | FLOAT | FLOAT |
36 | INT(8) | INT | INT |
37 | MEDIUMINT(10) | INT | INT |
38 | SMALLINT(2) | INT | INT |
39 | TINYINT(2) | INT | INT |
40 | LONGTEXT | TEXT | TEXT |
41 | MEDIUMTEXT | TEXT | TEXT |