powerdesigner根据txt建立表

其实还有一种方法就是在database选项里的reverse engineer database,把原先生成好的脚本,直接返生成表。  

 

上一周似乎就没写blog,不是我不想写,是真没抽出时间来,不能匆匆写两句就完事,没有价值和不写一样,所以利用现在的空闲时间要补上来。

  这段时间为啥忙,一个实习生也不会有啥可忙的应该,但是公司的case大,我也要干点简单的活,简单的活就是把需求文档中的每个实体创建到pdm中去,为下一阶段做好准备,当然这个活是简单到了只要ctrl+c和ctrl+v的份上了,但是能做好简单的事情就是不简单!而且这次量变引起了质变!有上千个实体总高,总共上万个字段……每个每个的复制粘贴过去……

  于是网上搜索关于word表格能不能转成pdm的相关内容,我知道这很天真,pdm好输出word,但是word怎么会那么好变pdm呢?在javaeye看到了点提示说可以用脚本实现,而脚本也没提供出来(要注册javaeye还要等三天后可以下载……)。

  鉴于此,我便找到了pd的脚本编程的帮助文档,写的很详细,而实际呢是用不了那么多的,实际是vbscript脚本调用pd提供的编程接口。代码简单,先贴上来了:

 


Option Explicit

'-----------------------------------------------------------------------------
'
 魔尊年少时制作 http://pc-funning.cnblogs.com/
'
 随便修改增强,希望能做记录,做注释,保留出处
'
 2009-1-21最后整理
'
-----------------------------------------------------------------------------
Dim system, file
Set system = CreateObject("Scripting.FileSystemObject"'创建文件对象


Dim ForReading, ForWriting, ForAppending
dim str
dim tittle
dim first
ForReading   
= 1 ' 设置文件只读 
ForWriting   = 2 ' 设置文件写入
ForAppending = 8 ' 设置文件追加

'-----------------------------------------------------------------------------
'
 主要程序
'
-----------------------------------------------------------------------------

Set file = system.OpenTextFile("D:/table.txt", ForReading)'打开文本文档
Dim noLine
Dim Tab  '定义一个表,vbscript中变量没有那么严格的类型,但此变量将来将用来表示table
ValidationMode = True
Dim mdl ' 定义当前激活的模型,也就是mdl
Dim Col
dim dm, dmstr
Dim SSS
Dim isNewTable

Set mdl = ActiveModel '获取当前激活模型

set Tab = mdl.Tables.CreateNew
isNewTable 
= True

first
=file.readline '读文档按行读
tittle=split(first) '以空格分隔划分入数组,获取的是表的属性,可以获取更多属性,根据实际情况而定
tab.name=tittle(0'name
tab.code=tittle(1'code
tab.comment=tittle(2'comment

Do While file.AtEndOfStream <> True '循环读取文档的每一行
   SSS = file.ReadLine
   str
=split(SSS)
   
   
if isNewTable = True then
     
if SSS <> "" then
       isNewTable 
= False
       
     
end if
   
elseif SSS = "" then
     
set Tab = mdl.Tables.CreateNew  '创建新表,这是读到空行时的表现,自己用来警示
     
   
else  
     
set Col=tab.Columns.CreateNew '创建一行字段
     Col.name = str(0'依次设置属性,同表的属性,字段熟悉也可以设置更多,根据实际情况
     Col.Code= str(1)
     col.datatype
=str(2)
     col.Comment
=str(3)
     
   
end if  
Loop
file.Close

 

   但是可能你发现了,这个读取的文件是从txt文件读取的,那么txt文件的要求格式呢?其实原理是很简单的使用split函数分隔字符串用来获取要写入的属性,然后调用接口写入属性。附txt格式:

 


表名 表code 表说明
********************此分割线用来分割表名与字段(不可删除)***********************

字段名1 字段code VARCHAR2(32) 说明
字段名2 字段code VARCHAR2(256) 说明

 

  可能会好奇中间那根线,是的,我也没弄明白,但是实践结果是没有那个线会漏掉下面第一个字段!因为是用午间休息时间试验的,所以也没去深入考究,有知道的朋友可以告诉我一声。

  这样,只要把word表格里的数据复制到txt中,然后把制表符替换成空格,然后去pd中运行脚本就行啦(PD中怎么运行脚本?直接用Ctrl+Shift+X吧,Tools工具栏里也有,不用费劲找了也。)

  由此一来,工作效率提高了有60%!呵呵,爽!

  

 

 

作者: 魔尊年少时
出处: http://pc-funning.cnblogs.com

希望您能从这里有所收获,本blog未经特殊说明随笔均为原创。随笔版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值