sp_create_table_sql2MySql 将sqlserver表结构平迁mysql

原创 2016年05月30日 18:14:01
use master
go
if OBJECT_ID('sp_create_table_sql2MySql','P') is not null
drop proc sp_create_table_sql2MySql
go
create proc sp_create_table_sql2MySql ( @tablename varchar(255) ) 
as 
begin
	 -- exec sp_create_table_sql2MySql 'Ad_AdGroup'
	 -- 0. 弘恩   将sqlserver表结构平迁mysql  
	 -- 1. sqlServer move to mysql struction  only table columns and pk
	declare @sql_create varchar(max) = '';
	declare @sql_column varchar(max);
	declare @sql_primary varchar(max);
	
	with cte as 
	(
		select  '`'+ c.name +'`' +' '+
				case TYPE_NAME(c.system_type_id)  when  'bit' then ' int ' when 'money' then ' float ' else  TYPE_NAME(c.system_type_id) end  +' '+
				case when  TYPE_NAME( c.system_type_id) in  ('char','varchar','decimal','nvarchar')  then ' ( '  else ''  end +
				case when  TYPE_NAME( c.system_type_id) in  ('char','varchar','nvarchar'  )  then cast(max_length as varchar)  else ''  end+
				case when  TYPE_NAME( c.system_type_id) in  ('decimal'  )  then cast(c.precision as varchar)+','+cast(c.scale AS varchar) else ''  end+  
				case when  TYPE_NAME( c.system_type_id) in  ('char','varchar','decimal','nvarchar')  then ' ) ' else ''  end +
				case when c.is_nullable = 1 then ' null ' else ' not null ' end +
				case when c.is_identity = 0 then ' ' else '  ' end  sqlstr ,  
				
				column_id
		 from sys.objects as o
		 join sys.columns as c on o.object_id = c.object_id 
		 where o.name = @tablename and o.type = 'U'
	 )
	select @sql_column = stuff(
	(select  ',' + sqlstr  + CHAR(10)
	from cte 
	order by column_id asc 
	for xml path('') ),1,1,'')
	 ;
	
	select @sql_primary = stuff(( 
	 select ',' + c.name
	 from sys.index_columns as i 
	 join sys.indexes as ix on i.object_id = ix.object_id  and i.index_id = ix.index_id
	 join sys.columns as c on i.object_id = c.object_id  and i.column_id = c.column_id
	 where OBJECT_NAME(i.object_id) = @tablename
	 and ix.is_primary_key = 1
	  order by i.key_ordinal
	 for xml path('')
	 ),1,1,'')

	 
	 set @sql_create = ' create table if not exists `' + @tablename + '`( ' 
	 +   @sql_column  
	 + case when len(@sql_primary) >= 1 then  (', primary key ( ' + @sql_primary + ')') else '' end 
	 + ' ) '
	 
	 
	print ' -- @sql_create -- '
	set @sql_create = replace(@sql_create,'nvarchar  (',' varchar(') + ';'
	set @sql_create = replace(@sql_create,'varchar( -1 )','varchar( 4000 )') 
	set @sql_create = replace(@sql_create,' varchar  ( -1 )',' varchar(4000) ') 
	set @sql_create = replace(@sql_create,' varbinary ',' VARBINARY(400) ')
	set @sql_create = replace(@sql_create,' smalldatetime ',' datetime ')
	set @sql_create = replace(@sql_create,'uniqueidentifier ','varchar(32) ')
	 
	
	print @sql_create
end 
 GO  
 EXEC sp_MS_marksystemobject 'sp_create_table_sql2MySql' 
 GO  
LOAD DATA LOCAL INFILE 'D:/migration/h/a_account.txt' INTO TABLE a_account                                                                                                              
CHARACTER SET gbk FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '\n';  
exec xp_cmdshell 'bcp db.[dbo].[T] out D:\migration\w\AdvertConfigure.txt -T -c';

将MYSQL表结构导入到SQL Server中,也可互换操作

1.使用工具 Navicat Premium  直接下载地址: http://www.baidu.com/link?url=MqOuKkRhNJ6nO_tFaLrmBPSmmK9GPapRAV1F1p...
  • leiliz
  • leiliz
  • 2017年07月06日 15:42
  • 900

使用SQLyog将sqlserver的数据及表结构迁移到mysql中

二、转移数据 我使用了MySQL的Client的工具SQLyog,这个工具的安装很简单。安装完成之后点击需要导入的目标数据库,点击右键【Import】->【Import Extenal Data】;...
  • myspacedemen
  • myspacedemen
  • 2016年07月28日 17:23
  • 5384

Sql Server数据库向Oracle数据库的迁移数据库结构

http://blog.sina.com.cn/s/blog_a196f88f0100zd1r.html Sql Server和Oracle区别比较大,包括语法,字段类型,数据库机制,配置管理方...
  • qingzhuoran
  • qingzhuoran
  • 2017年02月08日 11:20
  • 548

sqlserver数据库迁移到mysql的方法和步骤

一.迁移方法 工具:用mysql yog,下载地址1:http://wh.uzzf.com//jxl/SQLyog_Enterprise_chs.zip 下载地址2:http://yunpan.c...
  • LT_1029
  • LT_1029
  • 2014年08月26日 17:12
  • 3795

MySQL数据库数据迁移到SQLserver

最近因工作需要,需要将mysql数据库迁移到sqlserver,仅仅是数据迁移,因此相对比较简单。对于mysql迁移到sqlserver,我们需要使用到mysql odbc驱动,然后透过sqlserv...
  • robinson_0612
  • robinson_0612
  • 2016年04月05日 17:40
  • 7841

使用ODBC实现sql server 数据迁移到mysql

一步一步详细的介绍使用ODBC实现sql server数据迁移到mysql的过程在使用ODBC之前,我们要首先对ODBC有一个大概的了解,什么是ODBC?它的主要的作用是什么?ODBC(开放数据库连接...
  • zcswl7961
  • zcswl7961
  • 2016年11月29日 19:11
  • 358

SQLServer数据迁移到Mysql

Navicat 是卓软数码科技有限公司生产的一系列 MySQL、MariaDB、Oracle、SQLite、PostgreSQL 及 Microsoft SQL Server 的图形化数据库管理及发展...
  • l294333475
  • l294333475
  • 2015年01月20日 15:13
  • 1501

navicat工具来将SQL Server数据迁移到MySQL

下面来说说用navicat工具来将SQL Server数据迁移到MySQL上: 1. 新建需要迁移的数据库 2. 打开数据库,点击导入向导 3.  选择数据导入格式 ...
  • mqc753159
  • mqc753159
  • 2017年06月01日 09:52
  • 1045

kettle实现数据库迁移之oracle到mysql

本文介绍,如何通过kettle从oracle库迁移表到mysql库。但由于我第一次接触kettle,只知道单表复制,不知如何做批量复制,现在下面只介绍单表复制的做法,大家如果自己做过批量复制,希望可以...
  • dd276
  • dd276
  • 2016年08月01日 20:41
  • 3436

SQLServer表结构转换成Oracle表结构

表结构转换成Oralce 表结构,不支持索引以及自动增长
  • mh942408056
  • mh942408056
  • 2017年05月07日 14:54
  • 715
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sp_create_table_sql2MySql 将sqlserver表结构平迁mysql
举报原因:
原因补充:

(最多只允许输入30个字)