失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 用sql改oracle表结构 SQL server 表结构转Oracle SQL脚本

用sql改oracle表结构 SQL server 表结构转Oracle SQL脚本

时间:2024-02-01 13:47:06

相关推荐

用sql改oracle表结构 SQL server 表结构转Oracle SQL脚本

SQL server 表结构转Oracle SQL脚本

/****** Object: StoredProcedure [dbo].[getOracle] Script Date: /7/25 16:32:15 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[getOracle]

(@opTableName nvarchar(100))

as

begin

/********************

* 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=@opTableName

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;

select @tabledes = case when ISNULL(@tabledes,'')='' then '' else @tabledes end

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 'nvarchar' then 'nvarchar2('+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 '

WHEN 'numeric' then 'number('+CONVERT(varchar(10),intlength)+ ( case when decimallength>0 then ','+ CONVERT(varchar(10),decimallength) else '' end)+') '

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;

end

SQL Server表结构和数据导入到MySQL

借助的工具:Navicat for MySQL,链接:/s/1kVCw8IF 密码:g927 可以很明确的肯定,主键和自增列是没办法导入的,只能是表结构和数据. ...

SQL Server 表结构操作

一.创建表 --直接定义主外键 create table wallet( ID ) primary key, ,) not null, Name ) default '余额', Member_ID ) ...

Sql Server 表结构相关

1.库表列信息 --取所有库 SELECT Name FROM Master..SysDatabases ORDER BY Name --查询所有表 select name from 库名..syso ...

查询sql server 表结构

select column_name,data_type from information_schema.columns where table_name = '表名'

sql server 表结构 导出 到excel

SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, -- 字段序号 = a.colorder, 字段 ...

SQL SERVER表不能修改表结构的处理方法

SQL SERVER表提示不能修改表结构,这究竟是什么原因呢?下面就为您介绍处理该问题的方法,如果您在SQL SERVER表修改方面遇到过问题,不妨一看. 新装的SQL SERVER ,打开原 ...

SQL Server 一句Sql把表结构全部查询出来

--一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colo ...

SQL SERVER导入数据到ORACLE的方法总结

我们偶尔会有将数据从SQL SERVER导入到ORACLE当中的这种需求,那么这种跨数据库导数有那些方法呢?这些方法又有那些利弊呢? 下面比较肤浅的总结了一些可行的方法. 1:生成SQL脚本然后去OR ...

使用Microsoft SQL Server Migration Assistant for Oracle迁移数据库

前言:使用Microsoft SQL Server Migration Assistant for Oracle迁移Oracle数据库到SqlServer数据库. 准备:Oracle11g.SqlSe ...

随机推荐

Leetcode 45&period; Jump Game II

Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

Discuz&excl; x3&period;1的插件&sol;utility&sol;convert&sol;index&period;php代码执行漏洞

漏洞版本: Discuz! x3.1及以下版本 漏洞描述: Discuz! x3.1的插件/utility/convert/index.php存在代码执行漏洞,如果用户在使用完之后不删除,会导致网站容 ...

poj1182 并查集

题目连接:/problem?id=1182 基础并查集,需要维护与根节点关系,解析见代码: /* poj 1182 并查集 思路分析:让你分析这些话里面多少假的 只需要用 ...

MySQL优化必须调整的10项配置

当我们被人雇来监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议.许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项.这篇文章的目的在于 ...

tcp&sol;ip协议listen函数中backlog參数的含义

listen函数的定义例如以下所看到的: #include int accept(int sockfd, struct sockaddr * restrict ...

汇总博客常见的api接口地址(windows live write)

汇总博客常见的api接口地址(windows live write) 1. cnblogs 日志地址,直接输入 /xxxxx/ api接口 http://w ...

关于我的PP0&period;1聊天软件(客户端)

登陆界面: using System; using System.Collections.Generic; using ponentModel; using System.Data ...

ASP&period;NET CORE做的网站运行在docker实践

用VS建立了 DotNet Core 2.2的网站后,如何转移到 Docker下运行? 下面分两种方式来实践:1.直接手动命今行,将本机目录映射进Docker,运行网站.2.制作 Im ...

Python基础之关于表达式

初识表达式: 优雅.清晰和务实是python的核心价值观,如果想通过操作和处理一个序列(或其他的可迭代对象)来创建一个新 的列表时可以使用列表解析(List comprehensions)和生成表达式 ...

java高级----&gt&semi;Serializable的过程分析

本次讲解中我们在上次的基础上,深入的了解一下序列化的流程以及其中的原理.关于序列化的一些知识与使用,请参见我的另一篇博客:java基础---->Serializable的使用.好了,我们进行以下 ...

如果觉得《用sql改oracle表结构 SQL server 表结构转Oracle SQL脚本》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。