SQL server 表结构转Oracle SQL脚本

/****** Object: StoredProcedure [dbo].[getOracle] Script Date: 2019/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,链接:http://pan.baidu.com/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 2008,打开原 ...

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 并查集

题目连接:http://poj.org/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 日志地址,直接输入 http://www.cnblogs.com/xxxxx/ api接口 http://w ...

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

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

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

用VS2017 建立了 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脚本相关推荐

  1. sql中截取字符串函数_SQL Server 2017中的顶级SQL字符串函数

    sql中截取字符串函数 SQL Server 2017 has been in the talk for its many features that simplify a developer's l ...

  2. mysql表 spid program_SQL Server 表,记录 死锁解决办法

    我自己的数据库表记录死锁后的 根据以下资料的 解决方案: 1. 先根据以下语句 查询 哪些表被 死锁,及 死锁的  spid SELECT request_session_id spid,OBJECT ...

  3. ibm x3850装oracle,IBM X3850 Windows Server 2008 X64安装Oracle 10g x64问题锦集

    最近在IBM X3850机柜服务器上,Windows Server 2008 X64操作系统的环境下安装Oracle10g X64的数据库.搞了差不多有8个工作小时,感叹比在RedHat上安装都坑爹( ...

  4. SQL Server 表和索引存储结构

    SQL Server 表和索引存储结构 杜飞 在上一篇文章中,我们介绍了SQL Server数据文件的页面类型,系统通过96个字节的头部信息和系统表从逻辑层面上将表的存储结构管理起来,具体到表的存储结 ...

  5. 用友U8的SQL SERVER 数据库结构说明表

    用友U8的SQL SERVER 数据库结构说明表       在帐套中的两个表,一个表是RPT_GRPDEF,存放帐套中重要的表名及相关说明:另一个是RPT_ITMDEF,存放的是主要表中的相关字段说 ...

  6. SQL server复制表结构和复制表数据

    1,复制表结构 select * into 新表名称 from 旧表名称; 这个SQL语句可以将表的数据也复制过来 注意:像主键,外键这种属性是无法复制过来的 补充:当新表名称已经在数据库中存在的时候 ...

  7. 从SQL Server数据库转到Oracle数据库的数据脚本处理

    在我们很多情况下的开发,为了方便或者通用性的考虑,都首先考虑SQL Server数据库进行开发,但有时候客户的生产环境是Oracle或者其他数据库,那么我们就需要把对应的数据结构和数据脚本转换为对应的 ...

  8. mysql表文件与结构_MySQL文件结构、逻辑架构及sql执行流程分析

    1.MySQL文件说明 1.1 MySQL文件夹文件 linux服务器上MySQL安装好之后都有如下文件: auto.cnf:每一个MySQL实例都有一个唯一ID 蓝色文件夹:表示数据库,每个数据库对 ...

  9. 将SQL Server表变成txt文件

    本篇文章由 泉州SEO www.234yp.com 整理发布,mssql数据库 www.234yp.com/Article/168185.html 谢谢合作! mssql数据库 方法-:用BCP命令 ...

最新文章

  1. arm单片机中函数参数的传递
  2. CTFshow 文件包含 web87
  3. Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略
  4. Linux-编辑器vim与nano的使用
  5. 5G NR 频率 带宽 栅格
  6. Java中Comparator比较器的使用以及使用lamba简化代码
  7. LeetCode第 227 场周赛题解
  8. java 阻塞 socket_java socket非阻塞I/O
  9. 一场360容器圈的武林大会“360互联网技术训练营第九期—360容器技术解密与实践” (附PPT与视频)...
  10. 基于ASP的课外培训在线教育毕设免费下载
  11. 实验二(第一部分,第二部分)
  12. 使用虚拟机win7安装_STEP7 V5.6
  13. VMware Cloud Director 10.3.1 - 云计算调配和管理平台
  14. multisim C语言编程,基于Multisim10的51单片机仿真实战教程:使用汇编和C语言
  15. 如何搭建免费图床给Typora使用(PicGo + Gitee(码云)实现markdown图床)
  16. 1、玩转树莓派音频——DIY具有输入输出的声卡(非USB)
  17. 云班课计算机基础测试题,云班课在高职计算机基础微课教学中应用探究.doc
  18. AR模型参数估计、Y-W方程、L-D算法原理部分
  19. 如何用Visio画数据库实体关系图
  20. lineage-14.1-20190402-UNOFFICIAL-le_x620.zip

热门文章

  1. @程序员,紧急公告:你的头像藏着这样的秘密……
  2. 普通索引和唯一索引的区别以及何时需要建立索引
  3. BOOTSTRAP 编码规范 by @mdo
  4. mysql 4000行记录有必要建索引吗_MySQL 使用规范 - miaojiangmin的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. mapreduce实现wordcount 详细解析
  6. java在线考试系统源码网上考试系统源码在线考试系统(考试管理系统)考试系统
  7. java偏好设置_Mountain lion下Java Preference(Java偏好设置)应用丢失
  8. Unity UGUI_DropDown控件模拟QQ分组的使用心得
  9. 搜狗,中公司的焦虑与攻略
  10. RowMapperT的分析解释