引用文章地址:powerdesigner 使用excel 批量导入创建表_一年春又来的博客-CSDN博客_power designer 通过excel表新建表
1.Excel新建表
在工作中有时候会遇到在excel中建立表结构,如下图中表结构
地表水源不同水质供水量统计表 | WR_SWVSQT_S | 本表应描述不同水质地表水源的供水量信息 | |
行政区划代码 | ADDVCD | CHAR(6) | N |
年份 | YR | SHORTINT(4) | N |
评价时段 | ESTPRD | CHAR(1) | N |
城镇生活Ⅰ类供水量 | TWLFWSI | DECIMAL(12,2) | |
备注 | NT | VCHAR(256) |
说明:
1. 第一行是表信息的描述,依次是:表名、表Code、表注释
2. 第二行开始是列的描述,分别是:字段名、标识符、列数据类型、是否为空、列注释
3.Excel的sheet名称统一为sheet1
4.Excel的位置是:C:\Users\Administrator\Desktop\PowerDesigner批量导入导出\新建 XLSX 工作表.xlsx" '指定 excel文档路径
2.新建物理模型
打开PowerDesigner软件,新建物理模型。选择自己使用的数据库类型。
3.执行脚本
模型建立完成后 直接按 crtl+shift+x 打开执行脚本窗口。把脚本内容复制进去,点击执行开始进行表结构的转换。
4.脚本
' 第一行是表信息的描述,依次是:表名、表Code、表注释
' 第二行开始是列的描述,分别是:列名、列Code、列数据类型、列注释
' Excel的sheet名称统一为sheet1
'开始
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
RQ = vbYes 'MsgBox("Is Excel Installed on your machine ?", vbYesNo + vbInformation, "Confirmation")
If RQ = vbYes Then
HaveExcel = True
' Open & Create Excel Document
Dim x1 '
Set x1 = CreateObject("Excel.Application")
x1.Workbooks.Open "C:\Users\Administrator\Desktop\PowerDesigner批量导入导出\新建 XLSX 工作表.xlsx" '指定 excel文档路径
x1.Workbooks(1).Worksheets("Sheet1").Activate '指定要打开的sheet名称
Else
HaveExcel = False
End If
a x1, mdl
sub a(x1, mdl)
dim rwIndex
dim tableName
dim colname
dim table
dim col
on error Resume Next
set table = mdl.Tables.CreateNew '创建一个 表实体
For rwIndex = 1 To 1000 '
With x1.Workbooks(1).Worksheets("Sheet1")
If .Cells(rwIndex, 1).Value = "" Then
Exit For
End If
If rwIndex = 1 Then
' 表赋值
table.Name=.Cells(rwIndex, 1).Value '表名
table.Code=.Cells(rwIndex, 2).Value '表标识
table.Comment=.Cells(rwIndex, 1).Value '表说明
Else
set col = table.Columns.CreateNew '创建一列/字段
col.Name = .Cells(rwIndex, 1).Value '指定列名
col.Code = .Cells(rwIndex, 2).Value
col.DataType = .Cells(rwIndex, 3).Value '指定列数据类型
col.Comment = .Cells(rwIndex, 1).Value '指定列说明
If .Cells(rwIndex, 4).Value = "N" Then
col.Mandatory = true '指定列是否可空 true 为不可空
End If
'If .Cells(rwIndex, 6).Value Then
'col.Primary = true '指定列是否主键 true 为主键 '指定列是否可空 true 为不可空
'End If
End If
End With
Next
MsgBox "生成成功"
Exit Sub
End sub
5.转换
转换完成后,可以看到转换的表已经生成。双击表图标可以看到生成的表结构和SQL语句。