oracle表转换mysql建表语句_oracle建表语句转换成mysql-程序员宅基地

技术标签: oracle  mysql  数据库  

先上代码:

select  --t1.table_name,

       case when t1.COLUMN_ID <> 1 then '   ,'||lower(t1.COLUMN_NAME)||'  ' else 'create table  ' || t1.table_name || ' ( ' ||lower(t1.COLUMN_NAME)||'  ' end||
                      case
                                  when t1.DATA_TYPE like '%VARCHAR%' then 'VARCHAR'
                                  when t1.DATA_TYPE like '%DATE%' then 'DATETIME'
                                  when t1.DATA_TYPE like '%NUMBER%' then 'INT'
                                  when t1.DATA_TYPE like '%TIMESTAMP%' then 'TIMESTAMP'
                          else '无法识别的类型' end|| ' ( '||t1.data_length||' )'||
                     'null comment '||''''||t2.comments||'''' || case when t1.COLUMN_ID=t3.COLUMN_ID then ')'||'comment' || ''''||t3.comments || ''' ;' end as txt
                from all_tab_columns t1
                left join all_col_comments t2
                  on t1.owner = t2.owner
                 and t1.table_name = t2.table_name
                 and t1.column_name = t2.column_name
                left join (select max(COLUMN_ID) COLUMN_ID ,a.owner, b.table_name,comments from  all_tab_columns a
                    left join all_tab_comments b on a.owner = b.owner and a.table_name = b.table_name
                group by a.owner, b.table_name,comments )t3
                  on t1.owner = t3.owner
                 and t1.table_name = t3.table_name
               where t1.table_name in ('TABLE_NAME1','TABLE_NAME2','TABLE_NAME3')
                 and t1.owner = upper('db_name')
               order by t1.table_name,t1.column_id;




解释一下,这个sql主要是通过 all_tab_columnsall_col_comments两个数据字典,获取对应的表名、列表、类型、长度、注释,转换成mysqlDDL语句。

此代码没有进行主键判断,因为在我的工作中已经够用了,各位如果要转换的表很多那就得关联上user_constraints数据字典了

代码复制下来就能用,把table_name,和db_name换成要转换的表面和库名就行。注意表名大小写

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_56696646/article/details/127567576

智能推荐

对今日头条android端的一次简单分析(上)_chromium libwebp.so libstatic-webp.so-程序员宅基地

文章浏览阅读6.7k次。前言闲来无事,正看着百度新闻,突然灵感一闪,何不研究下一款新闻app,那就从今日头条开始吧。第一步1.1、轮廓分析这里使用压缩软件打开,主要看lib目录及assets目录。 1.2、lib目录lib目录主要是放一些库或jar包,打开后发现,只有一个armeabi目录,我们知道x86/x86_64/armeabi-v7a/arm64-v8a设备都支持armeabi架构的.so文件,所以一个目录也是可_chromium libwebp.so libstatic-webp.so

Linux 有线网络驱动实验(PHY芯片LAN8720)_lan8720每秒可以发送几次数据-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏20次。网络驱动是linux 里面驱动三巨头之一,linux 下的网络功能非常强大,嵌入式linux 中也常常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动,本章我们就来学习一下linux 里面的网络设备驱动。_lan8720每秒可以发送几次数据

Go内置关键字分析(二)_for i, x := range nums-程序员宅基地

文章浏览阅读665次。Go语言25个内置关键字分析(一):https://blog.csdn.net/sinat_24568041/article/details/80904271Go关键字按类型不同做如下区分(注:图片来自网络,若有侵权,请联系删除):2.2引用类型(1) Map作用:用于声明map类型数据 a.Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于..._for i, x := range nums

GD32F103RCT6/GD32F303RCT6(6.2)USART串口库函数介绍(包含DMA库函数)-程序员宅基地

文章浏览阅读699次,点赞6次,收藏10次。GD32教程 单片机 嵌入式 串口 向上代码兼容GD32F303RCT6中使用

宁波大学2013 计算机应用基础 高级c语言程序 练习册答案,计算机应用基础A1-程序员宅基地

文章浏览阅读286次。spContent=软件定义未来,软件实现了用计算机解决真实世界的各种问题。自计算机诞生之日起,人们探索的重点不仅在于建造运算速度更快、处理能力更强的计算机,而且在于开发能让人们更有效使用这种计算设备的各种软件。本课程作为大学阶段的第一门计算机基础课程,主要介绍面向过程的结构化程序设计思想及方法,为你打开软件设计与开发的大门。数字时代呼啸而来,懂得程序设计,就能更好的在数字海洋中自由遨游。本课程面..._c语言程序设计孙改平答案

mybatisplus 更新数据时(update updatebyId) 将指定字段的null值更新到数据库_mybatis updatebyid 空值更新入库-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏3次。mybatisplus 在封装更新语句时 会默认不更新值为null的字段;有的时候我们需要指定某个字段为null时更新进去又不想去mapper.xml 写update sql于是就有了如图 在对应的字段上面添加 @tableField注解注意 jdbcType 必须要有 不然会报错 无效列类型value 对应的是数据库的字段名另外在update的时候运用此注解 还有以下作用有兴趣的可以多看看源码了解哈..._mybatis updatebyid 空值更新入库

随便推点

vue打包出0kb的文件,导致部署到平台后报错404的问题_vue3.0 打包0kbcss-程序员宅基地

文章浏览阅读967次。问题描述:vue项目,进行打包后,在前端和后端本地都可以非常正常的跑起来,但部署到平台,提示 chunk-xxx.css文件找不到,报错404!解决办法:问题定位:那个提示找不到的css文件是0kb的,怀疑和这个有关,试了很多种乱七八槽的高级操作,最终,将代码中的<style></style>里面注释掉的css代码删除掉,重新打包,这次打出来的包就没有0kb文件了,再次部署,成功了~网上有人说是这个原因:springboot1时,0kb的css不会有什么问题,s._vue3.0 打包0kbcss

C++的双端队列_c++双端队列-程序员宅基地

双端队列是一种允许在队列两端进行插入和删除操作的数据结构。通过使用双端队列,可以实现从队列底部删除元素的需求。具体使用方法可以参考相关示例代码。

从一个class文件深入理解Class文件结构-程序员宅基地

文章浏览阅读382次。深入理解Class文件结构概述我们都知道编写的Java的源码会先编译成Class文件,java虚拟机再将Class文件解释编译成对应平台的机器指令,所以能够解析Class文件的数据结构是非常有必要的。先编写一段java源码,定义一个类并实现一个接口,类内部定义了一个成员变量、一个类变量和一个sum方法。package com.changyy.jvm;public class ClassTest implements IClassTest { private int n = 10_class文件结构

二叉树及先序遍历二叉树,中序遍历二叉树,后序遍历二叉树_1. 输入二叉树结点数,先序遍历序列,中序遍历序列2.输出该二叉树的后序遍历序-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏17次。1.二叉树的常用性质&lt;1&gt;.在二叉树的第i层上最多有2 i-1 个节点 。(i&gt;=1)&lt;2&gt;.二叉树中如果深度为k(有k层),那么最多有2k-1个节点。(k&gt;=1)&lt;3&gt;.若二叉树按照从上到下从左到右依次编号,则若某节点编号为k,则其左右子树根节点编号分别为2k和2k+1;&lt;4&gt;.二叉树分类:满二叉树,完全二叉树..._1. 输入二叉树结点数,先序遍历序列,中序遍历序列2.输出该二叉树的后序遍历序

微软cl编译器的简单使用_cl编译器tiny模式-程序员宅基地

文章浏览阅读562次。cl的位置:开始 –> 所有程序 -> Microsoft Visual Studio ->Visual Studio Tools -> Developer Command Prompt编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。注意,所有编译器选项都区分大小写。若要编译但不链接,请使用/_cl编译器tiny模式

设置相机水印字体的大小、位置_平板拍照的水印字体大小-程序员宅基地

文章浏览阅读7.9k次。需求是根据保存的照片的不同分辨率设置不同大小的文字水印,文字需要黑色描边,白底色,位于照片右下角水印描边是非常重要的,两种区别明显的颜色(示例代码中使用的就是黑色和白色)可以有效的提升在不同背景下水印的可识别度。解决方法是获取照片的尺寸,然后根据照片的尺寸进行文字大小的设置;并利用canvas.drawText(test,x,y,paint) 设置文字绘制的位置。根据Bitmap的尺..._平板拍照的水印字体大小

推荐文章

热门文章

相关标签