--=============================================--Author: suxinyu--Create date: 20170612--Description: 根据表名自动把表格的所有建表DDL SQL转化为 MySQL的建表SQL,不包含分区表,不处理区域数据类型;执行过程中,需要把存储过程建立在需要导出的数据库中。--Example: exec p_tb_mssqltomysql 'orders,ordernums,channels'--=============================================
--存储过程建立在需要导出表结构的DB上
USE db
GO
CREATE PROC [dbo].[p_tb_mssqltomysql]
@tbsql varchar(1000)AS
SET NOCOUNT ON;--处理tablename的字符串,把tablename字符串分割成每一行存储进入表变量中
DECLARE @tab_tablename table(tbname varchar(100))DECLARE @tbname varchar(100)INSERT INTO @tab_tablename(tbname)SELECT
SUBSTRING(@tbsql,NUMBER,CHARINDEX(',',@tbsql+',',NUMBER)-number)FROMmaster.dbo.spt_valuesWHERE TYPE='P' AND number>0 AND SUBSTRING(','+@tbsql,number,1)=','
--把mysql跟mssql的数据类型对应起来存储--空间数据类型不处理--money类型处理为float--timestamp处理为 timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
DECLARE @tbtype table(mssql varchar(20),mysql varchar(20))INSERT INTO &#