超详细教程:PowerDesigner 使用VBScript从Excel导入表结构(脚本带注释)

PowerDesigner 专栏收录该内容
3 篇文章 0 订阅

PowerDesigner是个好东西,可以用来设计数据库表结构,而且设计完成后可以直接导出sql。美中不足的地方是对于单个字段的调整不是很灵活,需要点开表,找到列点来点去的调整,不能快速的ctrl c ctrl v,而且查找也不是很方便,这种时候就想到了用Excel来维护表结构,在Excel先定义好表的各个字段名,含义,是否可空,是否主键,默认值等后,再用VBScript把表结构从Excel导入到PowerDesigner中利用PowerDesigner来生成数据库SQL, 这么配合就很完美了。下面开始讲解如何实现:

 

首先,给出我的Excel表格结构,因为脚本怎么写,和Excel内的表格格式有密切关系。

 

表的声明行只有两列,即读取到只有两列的行时,会认为这是一张表的开始,解析表结构的表名。

表的声明行下面紧接着的是列含义行,这只是为了方便Excel维护,看起来更直观,因此这一行和导入表结构没关系,会被跳过。

列含义行下面,就是具体的表字段行,这一行维护了表的字段名称,字段类型,是否主键,默认值,是否可空,注释 这些属性。

 

这里有几点需要注意:

1)表和表之间是没有空行的,读取到空行就会认为解析已到头,结束解析。

2)最下面的工作表名,要记住,在脚本内需要指定工作表名。

 

然后按这一格式约定编写VBScript脚本(脚本不需多熟悉VBScript也能读懂,不要怕):

    Option Explicit  

    Dim mdl ' the current model  
    Set mdl = ActiveModel  
    If (mdl Is Nothing) Then  
       MsgBox "There is no Active Model"  
    End If  

    Dim HaveExcel  
    Dim RQ  
    Dim x1sApp,xlsWorkBook,xlsSheet 
    RQ = vbYes 'MsgBox("Is Excel Installed on your machine ?", vbYesNo + vbInformation, "Confirmation")  
    If RQ = vbYes Then  
       HaveExcel = True  
       ' Open & Create Excel Document  


       Set x1sApp = CreateObject("Excel.Application")  
       set xlsWorkBook = x1sApp.Workbooks.Open("D:\6Temp\V8.3.xlsx")   '指定excel文档路径  
       set xlsSheet = x1sApp.Workbooks(1).Worksheets("Sheet1")   '指定要打开的sheet名称,这里一定要留意
    Else  
       HaveExcel = False  
    End If  

    a x1sApp, mdl,x1sApp,xlsWorkBook,xlsSheet  



    sub a(x1, mdl,x1sApp,xlsWorkBook,xlsSheet)  
    dim rwIndex     
    dim tableName  
    dim colname  
    dim table  
    dim col  
    dim count  
    dim rowCount

     rowCount = xlsSheet.usedRange.Rows.Count

    on error Resume Next  

    For rwIndex = 1 To rowCount   '指定要遍历的Excel行标  从第1行开始  
            With xlsSheet
                If .Cells(rwIndex, 2).Value = "" Then '如果遍历到第二列为空,则退出  
                   Exit For  
                End If
				
                If .Cells(rwIndex, 3).Value = "" Then '如果遍历到第三列为空,则此行为表名  
                   set table = mdl.Tables.CreateNew     '创建表  
                    table.Name = .Cells(rwIndex , 1).Value '指定表名,第二列的值  
                    table.Code = .Cells(rwIndex , 2).Value   
                    table.Comment = .Cells(rwIndex , 1).Value '指定表注释,第一列的值  
                    count = count + 1  
					'跳过表名下面的表头
					rwIndex = rwIndex + 1
					
                Else  
                   set col = table.Columns.CreateNew   '创建一列/字段  
                   'MsgBox .Cells(rwIndex, 1).Value, vbOK + vbInformation, "列"              
                   col.Name = .Cells(rwIndex, 1).Value   '指定列名         
                   'MsgBox col.Name, vbOK + vbInformation, "列"  
                   col.Code = .Cells(rwIndex, 2).Value   '指定列名                          
                   col.DataType = .Cells(rwIndex, 3).Value '指定列数据类型             
                     'MsgBox col.DataType, vbOK + vbInformation, "列类型"                 
                   col.Comment = .Cells(rwIndex, 7).Value  '指定列说明  

					'如果主键列值为PK则设置该列为主键
                    If .Cells(rwIndex, 4).Value = "PK" Then                   
                         col.Primary = true                  
                    End If
					'如果默认值列不为空,则设置默认值
					If .Cells(rwIndex, 5).Value <> "" Then                   
                         col.DefaultValue = .Cells(rwIndex, 5).Value            
                    End If
					'如果非空列值为NOTNULL则设置该列为非空
                    If .Cells(rwIndex, 6).Value = "NOTNULL" Then                   
                        col.Mandatory =true                  
                    End If

					
                End If    



            End With  

    Next  
    MsgBox "生成数据表结构共计 " + CStr(count), vbOK + vbInformation, "表"  
    xlsWorkBook.Close
    x1sApp.Quit
    set x1sApp = nothing
    set xlsWorkBook = nothing

    Exit Sub  
    End Sub 

设置字段各个属性对应的代码如下,可以根据自己需要来添加,正常来说,这些属性在表结构设计中,都是必要的

Col.Name         字段含义(中文)
Col.Code	 字段名(sql中使用的字段)
Col.DataType     字段类型
Col.Mandatory    (是否非空,true非空)
Col.DefaultValue (默认值)
Col.Primary      (是否主键,true主键)

接下来就是实操啦:

1.我们新建一个模型,.文件->新建模型->infomation->phisical data->键入模型名称,并勾选数据库版本,切记注意选好数据库类型和版本。我用的是oracle,如果你不知道自己的oracle数据库版本,可以连到数据库,执行select * from v$version;查看数据库版本。

 

2.按快捷键Ctrl+Shift+X调出脚本窗口,(注意检查下文件的路径和脚本内的路径是否一致)把脚本粘贴进去后,点击run,待运行结束后会弹出“生成数据表结构共计n表”的提示,这个时候就是导入成功啦。

查看左边Tables文件夹,可以看到生成了一堆表。

 

最后:

如果你还有从PowerDesigner把表结构导出为Excel的需求,可以继续阅读下面这篇文章:

https://blog.csdn.net/libertine1993/article/details/81057182

如果你还有设置表属主的需求,可以继续阅读下面这篇文章:

https://blog.csdn.net/libertine1993/article/details/81056871

 

 

 

  • 4
    点赞
  • 2
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值