Oracle 迁移 Mysql

-- Oracle->MySQL
-- 使用时改一下where条件的owner和table_name
-- 字段数据类型映射时会将Oracle中的浮点NUMBER转换为decimal(65,8)定点数
-- 可以识别主键约束、非空约束,但无法识别外键约束、唯一约束、自定义check
-- 对于Oracle字符串长度为4000的,MySQL中类型会使用text,否则会使用varchar
SELECT 
concat(concat(t2.owner,'.'),t2.table_name) src_table_name,
CASE 
WHEN t1.c=1 THEN concat(concat(concat(concat('create table ',lower(t2.owner)),'.'),lower(t2.table_name)),'(')
WHEN t1.c=2 THEN
    concat(
        concat(
            concat(lower(t2.column_name),' '),
            concat(
            concat(
                CASE 
                    WHEN t2.data_type IN ('VARCHAR','VARCHAR2','CHAR','NCHAR','NVARCHAR2') THEN (case when t2.data_length=4000 then 'text' else concat(concat(concat('varchar','('),t2.data_length),')') end)
                    WHEN regexp_replace(t2.data_type,'[(].+[)]','') IN ('TIMESTAMP','DATE') THEN 'datetime'
                    WHEN t2.data_type IN ('CLOB','NCLOB','LONG') THEN 'text'
                    WHEN t2.data_type IN ('BLOB','LONG RAW') THEN 'blob'
                    WHEN t2.data_type IN ('BINARY_FLOAT') THEN 'float'
                    WHEN t2.data_type IN ('BINARY_DOUBLE') THEN 'double'
                    WHEN t2.data_type IN ('FLOAT') THEN concat(concat('float(',CASE WHEN t2.data_precision>53 THEN 53 ELSE t2.data_precision END),')')
                    WHEN t2.data_type IN ('NUMBER') THEN 
                            CASE WHEN t2.data_precision IS NOT NULL AND t2.data_scale IS NOT NULL THEN concat(concat(concat(concat('decimal(',t2.data_precision),','),t2.data_scale),')')
                            WHEN t2.data_precision IS NULL AND t2.data_scale IS NULL THEN 'decimal(65,8)'
                            end
                end
                ,' '),
                (CASE WHEN t2.nullable='N' THEN 'not null ' ELSE '' END)
            )
            ),
        concat(concat(concat('comment ''',REPLACE(t2.column_comments,'''','''''')),''''),(CASE WHEN t2.column_id=t2.max_column_id AND t2.key_column_name IS null THEN '' ELSE ',' end))
    )
WHEN t1.c=4 THEN concat(concat(') comment ''',REPLACE(t2.table_comments,'''','''''')),concat('''',chr(59)))
WHEN t1.c=3 THEN concat(concat('primary key(',lower(t2.key_column_name)),')')
END sql_line,
CASE WHEN t1.c=1 THEN 0 WHEN t1.c=2 THEN t2.column_id WHEN t1.c=3 THEN t2.column_id+1 WHEN t1.c=4 THEN t2.column_id+2 WHEN t1.c=5 THEN t2.column_id+3 end ord,
t2.owner,
t2.table_name,
t2.table_comments,
CASE WHEN t1.c=2 THEN t2.data_type END data_type,
CASE WHEN t1.c=2 THEN t2.data_length END data_length,
CASE WHEN t1.c=2 THEN t2.data_precision END data_precision,
CASE WHEN t1.c=2 THEN t2.data_scale END data_scale
FROM 
(SELECT 1 c FROM dual
UNION ALL
SELECT 2 c FROM dual
UNION ALL
SELECT 3 c FROM dual
UNION ALL
SELECT 4 c FROM dual
UNION ALL
SELECT 5 c FROM dual
) t1
 JOIN (
SELECT t1.owner,
t1.table_name,
t1.comments table_comments,
t2.COLUMN_name column_name,
t2.data_type,
t3.comments column_comments,
t2.data_length,
t2.data_PRECISION,
t2.data_scale,
t2.column_id,
max(t2.column_id) over(PARTITION BY t1.owner,t2.table_name) max_column_id,
t4.key_column_name,
t2.nullable
FROM all_tab_comments t1
JOIN ALL_TAB_COLS t2 ON t2.owner=t1.owner AND t2.table_name=t1.table_name
JOIN all_col_comments t3 ON t3.owner=t1.owner AND t3.table_name=t1.table_name AND t3.column_name=t2.column_name
LEFT JOIN (SELECT t1.owner,t1.constraint_name,t1.table_name,to_char(wmsys.wm_concat(t2.column_name)) key_column_name FROM ALL_CONSTRAINTS t1
JOIN ALL_CONS_COLUMNS t2 ON t2.owner=t1.owner AND t2.constraint_name=t1.constraint_name AND t2.table_name=t1.table_name AND t1.constraint_type='P'
GROUP BY t1.owner,t1.constraint_name,t1.table_name) t4 ON t4.owner=t1.owner AND t4.table_name=t1.table_name
WHERE t1.owner IN ('') AND t1.table_name IN ('') -- 在此处限制owner和table_name
) t2 ON t1.c=1 AND t2.column_id=1 OR t1.c=2 OR t1.c=3 AND t2.key_column_name IS NOT NULL AND t2.column_id=t2.max_column_id OR t1.c=4 AND t2.column_id=t2.max_column_id OR t1.c=5 AND t2.column_id=t2.max_column_id
ORDER BY src_table_name,ord

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动开发笔记(十一)tty子系统及其驱动

文章目录 前言一、串口驱动框架1.1 核心数据结构1.2 数据处理流程 二、驱动编写1. 设备树的修改2. 相关API函数3. 驱动框架4. 具体功能的实现4.1 出入口函数的编写4.2 读写函数 前言 之前已经讲过应用层的应用,接下来我们继续进行驱动的学习。其实实际上我们很少主动…

Android记录22-关于开发中账号绑定的逻辑处理

有绑定的状态,自然也有取消绑定的状态: 这里的取消绑定只是简单改变应用内的一个状态罢了,并不会跟我们的服务端交互,也不会影响我们的账号登录的状态。 说了这么多,也没看见代码,你们会不会打我&#xff…

vs工程添加属性表

一、简介 1、 vs工程属性表以(.props)为后缀 2、 作用:当多个工程需要配置很多相同的属性配置时方便同步,比如多个工程需要链接相同的头文件,库文件,输出路径,中间目录等 3、本章内容测试环境&a…

天马学航——智慧教务系统(移动端)开发日志三

天马学航——智慧教务系统(移动端)开发日志三 日志摘要:更新了学生选课模块、我的课程模块以及退课的功能,优化了后端数据库的缓存 1、学生选课模块 学生选课模块主要实现,学生根据需求进行选课操作,通过后端查询到所有教师的课…

Java学习 - 网络IP地址与子网划分 讲解

IP地址 作用 用于决定数据包最终到达哪个计算机 组成 由32位比特组成,即4个字节这32位可以分为两个部分,称为网络号和主机号同一网段的计算机网络号相同,路由器负责连接不同的网段,而交换机负责连接同一网段中不同的计算机同一…

如何将 ChatGPT 集成到你的应用中

在当今快速发展的技术环境中,将人工智能聊天解决方案集成到你的应用程序中可以显著提升用户体验和参与度。OpenAI 的 ChatGPT 以其对话能力和高级语言理解而闻名,对于希望在其应用程序中实现智能聊天功能的开发人员来说是一个绝佳的选择。那我们今天就来…

高性能并行计算华为云实验一:MPI矩阵运算

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建矩阵乘法源码 3.1.1 实验说明 3.1.2 实验步骤 3.2 创建卷积和池化操作源码 3.2.1 实验说明 3.2.2 实验步骤 3.3 创建Makefile文件并完成编译 3.4 建立主机配置文件与运行监测 四、实验结果与分析 4.1 矩阵乘法…

压缩包文件密码破解软件 Ziperello 下载及使用教程

使用 Ziperello https://qweree.cn/index.php/416/ 对加了密码的压缩包进行密码破解,教程如下: 第一步,双击运行 Ziperello双击我打开程序.exe,如下图: 第二步,打开一个加了密的 ZIP 压缩包,再…

【408考点之数据结构】队列在操作系统中的任务调度和树的层次遍历

队列在操作系统中的任务调度 在操作系统中,任务调度是一个关键功能,队列常用于管理和调度任务,确保任务按照一定顺序执行。常见的调度算法包括先来先服务(FCFS)、短作业优先(SJF)、轮转调度&am…

Elastic字段映射(_source,doc_value,fileddata,index,store)

Elastic字段映射(_source,doc_value,filed_data,index,store) _source: source 字段用于存储 post 到 ES 的原始 json 文档。为什么要存储原始文档呢?因为 ES 采用倒排索引对文本进行搜索,而倒排索引无法存储原始输入…

程序员进阶书单

个人博客传送门 - 程序员进阶书单 翻遍知乎讨论贴、hackernews 吹水区、amazon best seller、豆瓣书单、大佬博客,经过一番不懈努力,汇总了一份质量过硬的程序员进阶书单,各位老铁先码住,慢慢看。 殿堂级 The Art of Computer …

什么概率密度函数?

首先我们来理解一下什么是连续的随机变量,在此之前,我们要先理解什么是随机变量。所谓随机变量就是在一次随机实验中一组可能的值。比如说抛硬币,我们设正面100,反面200,设随机变量为X,那么X{100,200}。 X是…

Vant:构建现代化移动端应用的理想选择

Vant:构建现代化移动端应用的理想选择 引言: 在当今移动互联网时代,移动应用的开发已经成为了许多企业和开发者的重要任务。为了提高开发效率和用户体验,选择一款优秀的UI组件库是至关重要的。而Vant作为一款流行的移动端UI组件…

STM32学习笔记(十)--I2C、IIC总线协议详解

概述:Inter Integrated Circuit,一组多从 多组多从 有应答 是一种同步(具有时钟线需要同步时钟SCL)、串行(一位一位的往一个方向发送)、半双工(发送接收存在一种)通信总线。 &…

【调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法】

调试笔记-系列文章目录 调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 文章目录 调试笔记-系列文章目录调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 前言一、调试环境操作系统:Windows 10 专业版调…

qmt量化交易策略小白学习笔记第46期【qmt编程之期货行情数据--如何获取5档盘口行情、期货结算价与持仓量】

qmt编程之获取期货数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,咨询免费开通量化回测与获取实盘权限,欢迎和博主联系! 获取5档盘口行情 …

【杂记-浅谈ICMP互联网控制消息协议】

ICMP互联网控制消息协议 一、ICMP协议概述1、定义2、工作原理3、报文格式 二、ICMP协议的应用场景1、Ping命令2、Traceroute命令3、错误报告4、MTU发现 三、ICMP协议的安全问题及防护措施1、安全威胁2、防护措施 一、ICMP协议概述 1、定义 ICMP,Internet Control …

GeoJson 地图地理信息数据获取

效果图: 获取渠道: 通过阿里数据可视化平台获取通过Vector Maps获取通过geojson来获取 1、通过阿里数据可视化平台获取 2、通过Vector Maps获取 3、通过geojson获取

lru_cache装饰器

LRU算法原理 LRU(Least Recently Used)算法是一种缓存淘汰策略。 用于在有限的缓存空间中管理数据对象。 lru_cache用法 Python的缓存(lru_cache)是一种装饰在被执行的函数上,将其执行的结果缓存起来,当下次请求的时候&#xf…

数据通信与网络(五)

交换机功能: 地址学习(端口/MAC地址映射表) 通信过滤(基于端口/MAC地址映射表) 生成树协议(断开环路) 隔离冲突域 生成树协议 隔离冲突域 交换机配置模式(用不同级别的命令对交换机进行配置) 普…