天天看点

PowerDesigner_使用vbs脚本将txt文件导入pdm

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("C:\Users\Administrator\Desktop\pdm.txt", ForReading)'打开文本文档

Dim noLine

Dim Tab  '定义一个表,vbscript中变量没有那么严格的类型,但此变量将来将用来表示table

ValidationMode = True

Dim mdl ' 定义当前激活的模型,也就是mdl

Dim Col '定义列

dim dm, dmstr '定义

Dim SSS '定义截取字符串的标准

Dim isNewTable '定义是否是新表

Dim i '记录下第几行,0代表第一行

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

'-----------------------------------------------------------------------------

' 建表操作

'-----------------------------------------------------------------------------

set Tab = mdl.Tables.CreateNew

isNewTable = True

first=file.readline '读文档按行读

tittle=split(first) '以空格分隔划分入数组,获取的是表的属性,可以获取更多属性,根据实际情况而定

Tab.name=tittle(0)&tittle(1) 'name

Tab.code=tittle(1) 'code

Tab.comment=tittle(1) '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  '创建新表,这是读到空行时的表现,自己用来警示,所以txt文档中的表与字段之间不要有空行

     SSS = file.ReadLine

     tittle= split(SSS)

     if ubound(tittle)=-1 then 

     SSS = file.ReadLine

     MsgBox SSS

     d

     end if

      Tab.name=tittle(0)&tittle(1) 'name

      Tab.code=tittle(1) 'code

      Tab.comment=tittle(1) 'comment

      'SSS = file.ReadLine

      i=0

      isNewTable=true

   else  

     set Col=tab.Columns.CreateNew '创建一行字段 (若不成功,默认创建7行字段)

    '依次设置属性,同表的属性,字段熟悉也可以设置更多,根据实际情况

     Col.name = str(1) '字段名称

     Col.Code= str(2) '字段说明

     if str(3)="VARCHAR" Or str(3)="NVARCHAR" then 

     Col.datatype=str(3)&"("&str(4)&")" '字段类型

     else

     Col.datatype=str(3)

     end if

'-----------------------------------------------------------------------------

' 当是第一行的时候设为主键,自己写的,i到后面可以添加外键和精度使用

'-----------------------------------------------------------------------------

     'MsgBox str(3)

     'Col.precision=cint(str(4)) '字段精度

     'if i=0 then 

     'Col.primary=true'设置主键

     'end if

     if str(1)="档案号" Or str(1)="文件序号" then

     Col.primary=true'设置主键

     end if

     i=i+1

   end if 

Loop 

file.Close
           

txt文件模板:

表名1 TB1
序号 字段名称 字段代码 字段类型 字段长度 值域 约束条件 备注
1 NAME NAME VARCHAR 50 非空 M
           

引用连接