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 创建表 CREATE TABLE 语法

MySQL中create table语句的基本语法是: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name     [(create_definit...
  • cceevv
  • cceevv
  • 2015年04月10日 18:11
  • 805

mysql 如何按照索引横向拼接两张表的字段, 利用create table as, join on

我本来是建了两张表,各自都有 wind_code, date 两列索引,其它的字段不相同。现在为了数据更新方便点,我希望将两张表的字段拼接起来,最后还只保留两列索引。 假设两张表的名称是stock_...

MySQL数据库表的基本操作——创建表CREATE TABLE

在操作数据库表之前要先选择数据库,USE

SqlServer转换为Mysql的一款工具推荐(mss2sql)

1.首先下载工具(下载地址会在该日志底部提供) 2.解压出来如图: 3.运行mss2sql.exe 一共2个选项,我这里选择第一项:直接移动到Mysql服务器 4.下一...

SqlServer转换为Mysql的一款工具推荐(mss2sql)

转自http://blog.csdn.net/andrew_wx/article/details/6832404/?reload#comments 前几天朋友发给我的这个工具,用了一下 感觉蛮不...

Oracle、DB2、SQLSERVER、MySQL、Access分页SQL语句

sqlserver分页 1.  第一种分页方法  参数:  pageSize 每页显示多少条数据  pageNumber 页数从客户端传来  totalRecouds 表中的总记录数 select c...

SqlServer转换为Mysql的一款工具推荐(mss2sql)

前几天朋友发给我的这个工具,用了一下 感觉蛮不错的。分享上来,同时也以便记录下来以后自用。工具名称:mss2sql来个操作流程:1.首先下载工具(下载地址会在该日志底部提供)2.解压出来如图:3.运行...

SqlServer转换为Mysql的一款工具推荐(mss2sql)

1.首先下载工具(下载地址会在该日志底部提供) 2.解压出来如图: 3.运行mss2sql.exe 一共2个选项,我这里选择第一项:直接移动到Mysql服务器 4.下一步: ...
  • t_jll
  • t_jll
  • 2012年03月07日 14:24
  • 316

ORACLE的临时表(CREATE GLOBAL TEMPORARY TABLE)以及和SQLServer的不同点

1简介 ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交...
  • fw0124
  • fw0124
  • 2015年01月15日 13:43
  • 2041

MySQL_create.sql

  • 2016年11月09日 16:43
  • 735B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sp_create_table_sql2MySql 将sqlserver表结构平迁mysql
举报原因:
原因补充:

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