powerdesigner-建立数据库模型及全局脚本

powerdesigner 使用

文章目录

    • powerdesigner 使用
      • 1. 建立数据库表模型
      • 2. 脚本统一修改表结构(赋值默认字段、统一删除、统一修改)
        • 2.1.统一添加默认字段:
        • 2.2.统一删除字段:
        • 2.3.统一修改表名称:
        • 2.4. 统一修改字段属性:
        • 2.5.其他函数

1. 建立数据库表模型

1.1.创建模型,并选择数据库类型
在这里插入图片描述

1.2 建立表在这里插入图片描述

1.3.修改表名称在这里插入图片描述

1.4.编辑表结构在这里插入图片描述
1.5.编辑索引
在这里插入图片描述
1.6.查看sql语句
在这里插入图片描述

2. 脚本统一修改表结构(赋值默认字段、统一删除、统一修改)

在这里插入图片描述
tools - execute commands - edit/ run Scripe 打开窗口输入vb脚本命令

2.1.统一添加默认字段:

对于需要排除在外的表,可添加在下面代码中:
if instr(",Ex1,Ex2,",","+CurrentObject.Code+",")>0 then exit sub

Option Explicit
ValidationMode = True
InteractiveMode = im_BatchDim mdl 
Set mdl = ActiveModel
If (mdl Is Nothing) ThenMsgBox "There is no Active Model"
ElseListObjects(mdl)
End IfPrivate Sub ListObjects(fldr) output "Scanning " & fldr.codeDim obj For Each obj In fldr.childrenTableSetComment objNextDim f For Each f In fldr.Packages ListObjects fNext
End SubPrivate Sub TableSetComment(CurrentObject)if not CurrentObject.Iskindof(cls_Table) then exit subif instr(",Ex1,Ex2,",","+CurrentObject.Code+",")>0 then exit subif not CurrentObject.isShortcut thenDim col  Dim numdim create_user_iddim create_timedim update_user_iddim update_timedim is_deletecreate_user_id=1update_user_id=1create_time=1update_time=1is_delete=1for each col in CurrentObject.columnsnum= num + 1if col.Code="create_user_id" thencreate_user_id=100end ifif col.Code="create_time" thencreate_time=100end ifif col.Code="update_user_id" thenupdate_user_id=100end ifif col.Code="update_time" thenupdate_time=100end ifif col.Code="is_delete" thenis_delete=100end ifnextif create_user_id=1 then CurrentObject.columns.CreateNewAt(num)for each col in CurrentObject.columns if col.DataType="" then col.Name="创建人"col.Code="create_user_id"col.Comment="创建人"col.DataType="varchar(64)"col.Mandatory=1end if nextnum=num+1end ifif create_time=1 then CurrentObject.columns.CreateNewAt(num)for each col in CurrentObject.columns if col.DataType="" then col.Name="创建时间"col.Code="create_time"col.Comment="创建时间"col.DataType="datetime"col.DefaultValue="CURRENT_TIMESTAMP"end if nextnum=num+1end ifif update_user_id=1 then CurrentObject.columns.CreateNewAt(num)for each col in CurrentObject.columns if col.DataType="" then col.Name="修改人"col.Code="update_user_id"col.Comment="修改人"col.DataType="varchar(64)"     end if nextnum=num+1end ifif update_time=1 then CurrentObject.columns.CreateNewAt(num)for each col in CurrentObject.columns if col.DataType="" then col.Name="修改时间"col.Code="update_time"col.Comment="修改时间"col.DataType="datetime"col.DefaultValue="CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"end if nextnum=num+1end ifif is_delete=1 then CurrentObject.columns.CreateNewAt(num)for each col in CurrentObject.columns if col.DataType="" then col.Name="删除标志"col.Code="is_delete"col.Comment="删除标志"col.DataType="tinyint"col.DefaultValue="0"end if nextnum=num+1end ifend if      
End Sub

2.2.统一删除字段:

对于需要排除在外的表,可添加在下面代码中:
if instr(",Ex1,Ex2,",","+tab.Code+",")=0 then

Option Explicit
ValidationMode = True
InteractiveMode = im_BatchDim mdl Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model."
Else
ProcessFolder mdl
End IfPrivate sub ProcessFolder(CurrentObject)Dim Tab 
for each Tab in CurrentObject.tablesif instr(",Ex1,Ex2,",","+tab.Code+",")=0 then if not tab.isShortcut thenDim col for each col in tab.columnsif instr(col.code,"update_user_id")<>0 thencol.Deleteend ifif instr(col.code,"update_time")<>0 thencol.Deleteend ifif instr(col.code,"create_user_id")<>0 thencol.Deleteend ifif instr(col.code,"create_time")<>0 thencol.Deleteend ifnextend ifend ifnext
MsgBox "success"end sub

2.3.统一修改表名称:

Option Explicit
ValidationMode = True
InteractiveMode = im_BatchDim mdl Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model."
ElseProcessFolder mdl
End IfPrivate sub ProcessFolder(CurrentObject)Dim Tab Dim NameStr , CodeStrfor each Tab in CurrentObject.tables       Tab.name  = Replace( Tab.name , "ori_name" , "new_name")Tab.code  = Replace( Tab.code , "s_" , "student_")nextMsgBox "success"
end sub

2.4. 统一修改字段属性:

对于需要排除在外的表,可添加在下面代码中:
if instr(",Ex1,Ex2,",","+tab.Code+",")=0 then

dim model set model = ActiveModel
If (model Is Nothing) ThenMsgBox "There is no current Model"ElseIf Not model.IsKindOf(PdPDM.cls_Model) ThenMsgBox "The current model is not an Physical Data model."ElseProcessTables modelProcessSequences modelMsgBox "success" End Ifsub ProcessSequences(folder)dim sequencefor each sequence in folder.sequencessequence.name = LCase(sequence.name)sequence.code = LCase(sequence.code)nextend subsub ProcessTables(folder)dim tablefor each table in folder.tablesif instr(",Ex1,Ex2,",","+table.Code+",")=0 then if not table.IsShortCut then ProcessTable tableend ifend ifnextdim subFolderfor each subFolder in folder.PackagesProcessTables subFoldernext 
end subsub ProcessTable(table)dim colfor each col in table.Columnsif col.code = "s_name" then col.code = "student_name" col.DataType = "vachar(64)"col.DefaultValue="1"col.Mandatory=0end ifcol.code = LCase(col.code)col.name = LCase(col.name)next table.name = UCase(table.name)table.code = UCase(table.code)end sub

对于其他需要修改的属性,可在ProcessTable方法中自定义编辑代码

2.5.其他函数

在2.4.中将ProcessTables subFolder调用的方法替换为下述方法即可

表字段的部分替换:

  sub ReplaceCol(table)dim colfor each col in table.Columnsif instr(col.code,qty)>0 then col.code = Replace(col.code,"qty","quantity")end ifif instr(col.code,amt)>0 then col.code = Replace(col.code,"amt","amount")end ifnext end sub

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

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

相关文章

霍因科技获首届全国信创产业生态创新奖

近日&#xff0c;2020首届全国信创产业生态创新大赛颁奖盛典在北京信创园举办&#xff0c;霍因科技提交的“霍因科技-信创云统一存储和数据湖方案”荣获生态创新奖&#xff0c;这彰显了霍因科技在以数据存储技术推动信息技术应用创新产业方面的卓越成就。 据悉&#xff0c;首届…

国际免费版 新冠疫情数据分析APP正式发布!

简介 在今年2月初&#xff0c;SLS 已经发布针对新冠病毒肺炎疫情国内动态展示分析 APP&#xff0c;目前该能力全面开放给政府、社区、第三方平台和开放者进行广泛应用&#xff0c;完全免费开放。还没有关注过的同学可以通过以下链接了解背景&#xff1a; 新冠病毒疫情分析 AP…

Cloud Native Infrastructures Meetup 北京 | 活动安排

OpenAnolis社区首场线下meetup将联合Open Infrastructure基金会亮相北京&#xff0c;来自阿里云、蚂蚁集团&#xff0c;Intel&#xff0c;中国移动&#xff0c;红帽等公司的技术专家将围绕内核、容器及虚拟化等云原生基础设施技术展开探讨&#xff0c;解析相关开源技术内幕及社…

阿里云专家赵伟教你在CDN边缘节点上构建多层纵深防护体系

网络安全态势严峻&#xff0c;常见的五大网络攻击风险类型 赵伟认为&#xff0c;企业线上服务所面临的安全风险&#xff0c;主要来自以下五个方面&#xff1a; DDoS攻击 DDoS攻击类型已有20多年历史&#xff0c;它攻击方式简单直接&#xff0c;通过伪造报文直接拥塞企业上联带…

java并发编程面试

文章目录1.为什么要使用线程池&#xff1f;2.你们哪些地方会使用到线程池&#xff1f;3.线程池有哪些作用&#xff1f;4.线程池的创建方式&#xff1f;5.线程池底层是如何实现复用的&#xff1f;6.ThreadPoolExecutor 核心参数有哪些 &#xff1f;7.线程池创建的线程会一直在运…

下一代云原生应用制品管理平台,容器镜像服务企业版优惠进行时

随着越来越多的企业拥抱容器、拥抱云原生技术&#xff0c;享受技术带来的弹性、敏捷、可移植的便利&#xff0c;但是在实现容器技术生产落地时&#xff0c;很难规避以下痛点问题&#xff1a; &#xff11;、 运维复杂度&#xff1a;需要自建一个高可用的镜像服务去面对峰值流量…

软件设计师 - 系统测试

软件测试的目的&#xff1a;发现尽可能多的缺陷&#xff0c;而不是为了证明软件的正确性&#xff1b; 白盒测试&#xff1a; 语句覆盖每个可执行语句都被执行到判定覆盖&#xff08;分支覆盖&#xff09;每个语句至少执行一次&#xff0c;且每个判定的可能结果都至少执行一次条…

开放下载!《OSS运维基础实战手册》

作为一名云运维工程师&#xff0c;在攻克OSS的道路上难免会遇到"天花板"。放轻松&#xff0c;《OSS运维基础实战手册》帮你轻松解决&#xff01;本书透彻解析OSS核心概念&#xff0c;十二心法打开全新运维视角&#xff0c;力求帮助云运维工程师们打破能力上升瓶颈。 …

MQ相关面试题

文章目录你们项目中哪些地方有使用到 MQ &#xff1f;为什么需要使用 MQ&#xff1f;MQ 如何避免消息堆积的问题&#xff1f;MQ 宕机了消息是否会丢失呢&#xff1f;生产者投递消息&#xff0c;MQ 宕机了如何处理&#xff1f;MQ 如何保证消息顺序一致性问题?为什么保证了消息顺…

终于要跟大家见面了,Flink 面试指南

面试&#xff0c;一个令人大多数同学头疼的问题&#xff0c;要么成功进入心仪公司&#xff0c;要么沮丧与其失之交臂。但是&#xff0c;如果能在面试前就能知道面试官将会问的问题&#xff0c;然后可以好好提前准备&#xff0c;这种感觉是不是特别棒&#xff1f; 之前社区帮大…

云转型谈何容易?打破转型阵痛,汇量科技加码云原生

作者 | 伍杏玲出品 | CSDN云计算10 年前&#xff0c;Netscape 创始人、硅谷著名投资人马克安德森表示“软件正在吞噬世界”&#xff0c;这只说了故事的一半&#xff0c;10 年过去&#xff0c;人们从不信任到得“云”者得天下&#xff0c;云服务成为正在吞噬世界的“大鱼”。工业…

SpingBoot 整合 kafka Elk

文章目录1. 依赖2. yml配置3. 测试类4. aop拦截5. 并发队列异步发送MQ6. 封装json消息7. 完整封装json消息1. 依赖 <dependencies><dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></…

如何用一套引擎搞定机器学习全流程?

作者:陈戊超&#xff08;仲卓&#xff09; 深度学习技术在当代社会发挥的作用越来越大。目前深度学习被广泛应用于个性化推荐、商品搜索、人脸识别、机器翻译、自动驾驶等多个领域&#xff0c;此外还在向社会各个领域迅速渗透。 背景 当前&#xff0c;深度学习的应用越来越多…

分布式解决方案之分布式日志采集elk+kafka 环境的构建

文章目录一、软件下载列表1. zookeeper2. kafka3. logstash4. elasticsearch5. kibana6. zktools二、安装zk环境2.1. 上传安装包2.2. 解压2.3. 创建data目录2.4. 修改配置2.5.启动zk三、安装kafka环境3.1. 上传安装包3.2. 解压kafka安装包3.3. 创建data文件夹3.4. 修改配置3.5.…

基于https国密算法构建安全数据传输链路

网络数据安全得到前所未有的重视 HTTPS成为解决传输安全问题利器 大家都知道&#xff0c;HTTP 本身是明文传输的&#xff0c;没有经过任何安全处理&#xff0c;网站HTTPS解决方案通过在HTTP协议之上引入证书服务&#xff0c;完美解决网站的安全问题。 下图左侧表示Chrome浏览…

AOP+自定义注解 实现service统一的异常信息处理

返回信息枚举 TipsMsg&#xff1a; public enum TipsMsg {DEFAULT_SUCCESS("0","操作成功"),DEFAULT_FAILED("1","操作失败"),//其他枚举//get//set}自定义注解 ReturnMsg &#xff08;也是切点&#xff09; &#xff1a; Target(El…

跟风 Python 的人,后来都怎样了?

许多人觉得 Python 功能强大、就业范围范围广还上手轻松&#xff0c;得来全部费功夫。 但是一旦推开 Python 的大门你会发现&#xff0c;Python 入门容易但精通很难。看似语法掌握熟练&#xff0c;但一面试或者做项目就会被打回原形。 比如&#xff1a; 1&#xff09;如何写出高…

Kubernetes 是一个“数据库”吗?

作者 | 张磊&#xff0c;阿里云高级技术专家、CNCF 官方大使&#xff0c;CNCF 应用交付领域 co-chair&#xff0c;Kubernetes 项目资深维护者 最近&#xff0c;Kubernetes 社区里有一个关于“Kubernetes is the new database”的论述&#xff0c;引起了很多人的关注。当然&…

云原生下的开发测试

【以下为分享实录&#xff0c;有删节】 测试环境管理之困与阿里巴巴的解决之道 在云原生时代下&#xff0c;软件的迭代速度越来越快&#xff0c;对测试的要求也越来越高&#xff0c;很多开发者开始使用Kubernetes来管理测试环境。在这个过程中&#xff0c;开发者会遇到很多困…

我是程序员,我用这种方式铭记历史

作者 | kokohuang责编 | 晋兆雨头图 | 付费下载于视觉中国✨抗战直播: 以图文方式“直播”1931年9月18日至1945年9月2日14年间抗战的日日夜夜✨开源地址&#xff1a;https://github.com/kokohuang/WarOfResistanceLive✨预览地址&#xff1a;https://kokohuang.github.io/WarOf…