oracle转换表结构,SQLServer表结构转换成Oracle表结构
/********************
* function:sqlserver 表结构转换成Oralce 表结构,不支持索引以及自动增长
**********************/
--取消影响行数
set nocount on;
--创建表名游标
declare table_cursor cursor for
select CONVERT(varchar(300),x.name) name,CONVERT(varchar(500),y.value) value
from sys.tables x
left join (select major_id,value from sys.extended_properties where minor_id=0) y
on x.object_id=y.major_id
where x.name='T_STATISTICS_WaterOutputMonth'
order by x.name;
--声明变量
declare
@sql varchar(max)='',
@primary varchar(300),
@tableName varchar(300), --表名称
@tabledes varchar(500); --表名称描述
--创建表结构临时表
create table #table(colname varchar(300),
isprimary int,
typename varchar(50),
intlength int,
decimallength int,
nullflag int,
defaultval varchar(50),
commonts varchar(500)
)
--打开游标
open table_cursor;
fetch next from table_cursor into @tableName,@tabledes;
while @@FETCH_STATUS = 0
begin
truncate table #table;
insert into #table (colname,isprimary,typename,intlength,decimallength,nullflag,defaultval,commonts)
SELECT CONVERT(varchar(300),a.name) [字段名],
(case when (SELECT count(*)
FROM sysobjects
WHERE (name in (SELECT name
FROM sysindexes
WHERE (id = a.id)
AND (indid in (SELECT indid
FROM sysindexkeys
WHERE (id = a.id)
AND (colid in (SELECT colid
FROM syscolumns
WHERE (id = a.id)
AND (name = a.name)))))))
AND (xtype = 'PK')) > 0 then 1
end) [主键],
b.name [类型],
COLUMNPROPERTY(a.id, a.name, 'PRECISION') as [长度],
isnull(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) as [小数位数],
(case when a.isnullable = 1 then 1 else 0 end) [允许空],
e.text [默认值],
CONVERT(varchar(500),g.[value]) AS [说明]
FROM syscolumns a
left join systypes b
on a.xtype = b.xusertype
inner join sysobjects d
on a.id = d.id
and d.xtype = 'U'
and d.name <> 'dtproperties'
left join syscomments e
on a.cdefault = e.id
left join sys.extended_properties g
on a.id = g.major_id
AND a.colid = g.minor_id
left join sys.extended_properties f
on d.id = f.class
and f.minor_id = 0
where b.name is not null
and d.name=@tableName
order by a.id,a.colorder
--初始化变量
set @sql='';
--构建表结构
select @sql+='
'+case colname when 'Comment' then 'Comments' else colname end +' '
+case typename
when 'varchar' then 'varchar2('+CONVERT(varchar(10),intlength)+') '
when 'int' then 'number(4) '
when 'decimal' then 'number('+CONVERT(varchar(10),intlength)+ ( case when decimallength>0 then ','+ CONVERT(varchar(10),decimallength) else '' end)+') '
when 'datetime' then 'date '
else typename
end
+ case when defaultval is not null and len(defaultval)>0 then 'default '+
(case when charindex('getdate',defaultval)>0 then 'sysdate '
when charindex('newid',defaultval)>0 then 'sys_guid() '
else (case when typename='int' or typename='decimal' then REPLACE(REPLACE(defaultval,'(',''),')','') else defaultval end )
end)
else '' end
+ case when nullflag=0 then ' not null,' else ',' end
from #table;
select * from #table
if @sql is not null and len(@sql)>0
begin
set @sql=left(@sql,len(@sql)-1);
--创建表结构
set @sql='create table '+ @tableName+'('+@sql+
'
);
comment on table '+@tableName+' is '''+@tabledes+''';
'
--添加备注
select @sql+= case when commonts is not null and len(commonts)>0 then 'comment on column '+@tableName+'.'+colname+' is '''+commonts+''';
' else '' end
from #table;
--添加主键索引
if exists(select 1 from #table where isprimary=1 )
begin
set @primary=''
select @primary+= colname+','
from #table
where isprimary=1
set @primary=left(@primary,len(@primary)-1);
set @sql+='alter table '+@tableName+' add constraint PK_'+@tableName+' primary key ('+@primary+');'
end
end
print @sql;
fetch next from table_cursor into @tableName,@tabledes;
end
close table_cursor;
deallocate table_cursor;
drop table #table;
oracle转换表结构,SQLServer表结构转换成Oracle表结构相关推荐
- 关于数据导出成excel表
关于数据导出成excel表 咱们这里分享简单导出成excel表和筛选导出excel表,希望对各位有帮助,欢迎大家交流和点赞!!!! 我在这里使用的是一个导出工具类,如下: package cn.ms. ...
- oracle表数据转换成sql,ORACLE8I转换数据到SQLSERVER数据库
最近做一个项目的DOTNET版,说是升级,从ASP升为DOTNET,可因为项目架构原因,数据库得从ORACLE转为SQL SERVER...^_|| ,之前未使用过ORACLE,转换数据过程中碰到了不 ...
- Sybase和mysql语法_主流数据库复制表结构(SqlServer/Mysql/Oracle/Sybase)[语法差异分析]...
因为数据库SQL语句在各大产品中带有"方言性",即SQLSERVER SYBASE都是用了T-SQL,Mysql是用的标准SQL,Oracle有有自己的PL/SQL.由于这种&qu ...
- PowerDesigner表结构和字段大小写转换
原文:https://www.cnblogs.com/zhzhang/p/3946609.html [转]PowerDesigner表结构和字段大小写转换 [转自]http://blog.csdn.n ...
- ezdml 支付mysql 吗_EZDML数据库表结构设计器_设计sql、oracle、mysql数据库表结构 V2.39 免费版...
很多程序员或者网站站长在设计网站数据库的时候都要进行表结构设计,如果您不想操作原始的数据库工具之想简单设计一下数据库表结构,那么你不妨试试这款EZDML数据库表结构设计器,可以快速设计sql.orac ...
- oracle导入表结构失败,【求解】:导入表结构时,总报 IMP-00017 ,大家帮帮忙,谢谢!!...
原帖由 carcase 于 2010-11-12 10:02 发表 INITIAL 1275068416 空间够不够啊 这个initial确实很讨厌,能确定是空间的问题吗? 我又重建了一个3.5g的表 ...
- SqlServer清空一个数据库中所有表数据保留表结构
SqlServer将多行查询结果通过逗号拼接成一个字符串 select stuff((select ','+title from tb for xml path('')),1,1,'') --其中tb ...
- impdp导入表结构和表数据_ORACLE数据库如何用datapump工具导出表结构然后导入到其它Schema下面...
这里简单介绍一下如何使用ORACLE数据库的datapump工具导出.导入表结构定义.由于业务场景可能非常简单,你不会遇到任何问题,也有可能业务场景非常复杂,你就会遇到一些杂七杂八的问题.下面我简单介 ...
- 数据透视表sql:用SQL行列转换实现数据透视的一些思考
用SQL行列转换实现数据透视的一些思考 摘要:根据对报表开发过程中碰到的需要用SQL行列转换进行解决的一类查询统计问题的分析,逐步探索求解得到一种较通用的解决思路,并用函数进行实现.该解决思路及函数实 ...
最新文章
- android打开wav格式,FileNotFoundException从Android资产中打开wav文件
- HTML 5 应用程序缓存
- 伊利诺伊大学厄巴纳-香槟分校
- MySQL修改root密码
- 训练和验证准确性_通过沉浸式虚拟现实观察动作增强运动想象训练
- Tomcat 怎么停止服务的?
- mysql错误代码1813_ERROR 1813 (HY000) at line 404: Tablespace for table '`xxx`.`xxxxx`' exists.
- 文件共享之Samba
- 如何把文件压缩变成一张图片?
- jdk8 接口抽象类区别_JDK 8时代的抽象类与接口
- 洛谷 P1589 泥泞路 2019青岛市竞赛(贪心)
- python字符串随机排序_python 随机数使用方法,推导以及字符串,双色球小程序实例...
- 【华为云技术分享】揭秘华为云DLI背后的核心计算引擎
- 计算机二级之Office应用之Excel中的函数(3)
- C++基础::typeid、type_info
- 分布式文件系统_新一代分布式文件系统XGFS揭秘——元数据服务
- windows下编译librtmp库
- hsqldb mysql_启动hsqldb数据库
- python绘制柱状图和折线图_python绘制散点图,柱状图和折线图
- 2022年煤气考试试题及答案