当前位置: 首页 > ds >正文

Oracle转Mysql建表脚本

–Oracle转mysql建表脚本
SELECT
t.column_id,
‘edi_’ || t.table_name AS table_name,
CASE

	WHEN t1.table_name IS NOT NULL THENREPLACE (t.ddl_sql,',',');' 
) ELSE t.ddl_sql 

END AS ddl_sql
FROM
(–拼接建表语句
SELECT
column_id,
table_name,
lower(
CASE

			WHEN nullable = 'N' THENcolumn_name || ' ' || column_type_new || ' NOT NULL COMMENT ' || '''' || column_comments || ''',' ELSE column_name || ' ' || column_type_new || ' COMMENT ' || '''' || column_comments || ''',' END ) AS ddl_sql FROM(---Oracle转mysqlSELECTlower(CASEWHEN column_type  in('VARCHAR2(2000)','VARCHAR2(4000)') THEN'text' WHEN column_type LIKE '%FLOAT%' AND data_precision > 64 THEN'decimal(64)' WHEN column_type LIKE '%FLOAT%' AND data_precision <= 64 THENREPLACE (column_type,'FLOAT','decimal' ) WHEN column_type = 'TIMESTAMP(6)(11)' THEN'timestamp(6)' WHEN column_type LIKE '%CHAR%' THENREPLACE (REPLACE (column_type,'NVARCHAR2','VARCHAR' ),'VARCHAR2','VARCHAR' ) WHEN column_type = 'NUMBER(22)' THEN'bigint' WHEN (column_type LIKE '%NUMBER%,0%' OR column_type LIKE '%FLOAT%' ) AND data_precision > 10 THENREPLACE (REPLACE (column_type,'NUMBER','bigint' ),',0','' ) WHEN column_type LIKE '%NUMBER%,0%' AND data_precision <= 10 THENREPLACE (REPLACE (column_type,'NUMBER','int' ),',0','' ) WHEN column_type LIKE '%NUMBER%' AND column_type NOT LIKE '%NUMBER,0%' THENREPLACE (column_type,'NUMBER','decimal' ) WHEN column_type = 'DATE(7)' THEN'datetime(0)' ELSE column_type END ) AS column_type_new,column_id,table_name,table_comments,column_name,column_comments,data_type,data_length,data_precision,data_scale,nullable FROM(--oracle字段拼接SELECTt2.column_id,t.table_name,t1.comments AS table_comments,t2.column_name,REPLACE (t3.comments,'''','' ) AS column_comments,data_type || '(' ||CASE--number类型特殊处理WHEN data_type NOT IN ('NUMBER','FLOAT' ) THENDATA_LENGTH || (CASEWHEN data_precision IS NOT NULL THEN',' || data_precision || ')' ELSE ')' END ) ELSECASEWHEN data_precision IS NOT NULL THENdata_precision || (CASEWHEN data_scale IS NOT NULL THEN',' || data_scale || ')' ELSE ')' END ) ELSE DATA_LENGTH || (CASEWHEN data_precision IS NOT NULL THEN',' || data_precision || ')' ELSE ')' END ) END END AS column_type,data_type,data_length,data_precision,data_scale,nullable FROMuser_tables tINNER JOIN user_tab_comments t1 ON t.table_name = t1.table_nameINNER JOIN user_tab_columns t2 ON t.table_name = t2.table_nameINNER JOIN user_col_comments t3 ON t.table_name = t3.table_name AND t2.column_name = t3.column_name WHEREt.table_name IN ('TEST') ) n ) m UNION ALLSELECT0 AS column_id,table_name,lower('CREATE TABLE edi_' || table_name || '(' ) AS ddl_sql FROMuser_tables WHEREtable_name IN ('TEST') ) tLEFT JOIN (SELECTtable_name,max(column_id ) AS column_id FROMuser_tab_columns GROUP BYtable_name ) t1 ON t.table_name = t1.table_name AND t.column_id = t1.column_id ORDER BYt.table_name,t.column_id;

–索引
SELECT
m.index_name,
lower(
CASE

		WHEN m.uniqueness = 'UNIQUE' THEN'CREATE UNIQUE INDEX ' || m.index_name || ' ON edi_' || m.table_name || '(' || m.column_name || ')' ELSE 'CREATE INDEX ' || m.index_name || ' ON edi_' || m.table_name || '(' || m.column_name || ')' END ) || ';' AS create_index 
FROM(SELECTt.index_name,t.table_name,t.uniqueness,wm_concat (t1.column_name ) AS column_name FROMuser_indexes tINNER JOIN user_ind_columns t1 ON t.table_name = t1.table_name AND t.index_name = t1.index_name WHEREt.table_name IN ('TEST') GROUP BYt.index_name,t.table_name,t.uniqueness 
) m;
http://www.xdnf.cn/news/16364.html

相关文章:

  • RocketMQ常见问题梳理
  • IDM:registered with a fake serial number
  • 【JavaEE】Spring Web MVC(上)
  • NineData 数据库 DevOps 全面支持 GaussDB,国产化管理再升级!
  • Canal 1.1.7的安装
  • 焊接机器人节能先锋
  • Kafka——多线程开发消费者实例
  • 华为云DRS实现Oracle到GaussDB数据库迁移的全流程技术方案
  • 配置Mac/Linux终端启动执行脚本
  • 【小沐学GIS】基于Unity3d绘制三维数字地球Earth(Unity3d、OpenGL、GIS)
  • Linux 网络与 Vim 编辑器操作
  • MySQL 事务管理
  • Linux 中 `chown`、`chgrp` 和 `chmod` 命令详解
  • Java学习第七十三部分——Redis
  • Gin 框架的中间件机制
  • 【08】C#入门到精通——C# 文件操作 读取并删除指定文件 修改指定文件名
  • LLM中典型的Transformer层中:MLP Residual; LN Agg: μ, σ; SM Agg 是什么意思
  • 从0开始学习R语言-Day56--空间变系数模型
  • 【Git知识】Git 常用知识集合之基础--分支系统与 Tag 标签机制
  • 华为仓颉编程语言的表达式及其特点
  • Lua协同程序(coroutine)
  • iOS网络之异步加载
  • YOLO算法演进综述:从YOLOv1到YOLOv13的技术突破与应用实践,一文掌握YOLO家族全部算法!
  • 图像认知与OpenCV——图像预处理2
  • 【Unity开发】飞机大战项目实现总结
  • Python 程序设计讲义(15):Python 的数据运算——位运算
  • Unity VS Unreal Engine ,“电影像游戏的时代” 新手如何抉择引擎?(1)
  • 读书笔记(黄帝内经)
  • 使用Python采集招聘网站数据并智能分析求职信息
  • P1013 [NOIP 1998 提高组] 进制位