数据字典到SQL语句的转换(使用word与VBA)

简介: 一般我们有几种方式对数据库建模: 1.采用PowerDesign或ErWin等建模工具进行建模 2.利用WORD或EXCEL进行建模 使用第一种方式,可以自动导出要生产表的SQL语句,建表比较方便,而对于第二种方式,则可能需要手工建表,其实在WORD中可以用VBA完成对SQL语句的生成,如将下...

一般我们有几种方式对数据库建模:

1.采用PowerDesign或ErWin等建模工具进行建模

2.利用WORD或EXCEL进行建模

使用第一种方式,可以自动导出要生产表的SQL语句,建表比较方便,而对于第二种方式,则可能需要手工建表,其实在WORD中可以用VBA完成对SQL语句的生成,如将下面格式的WORD数据字典生成SQL语句,就可以利用VBA进行

 

WORD文档样式为:

 

Table1

 

 

 

 

 

 

PK

 默认值

Field1

 

Varchar(50)

 1

Field2

 

Int

 

 

Field3

 

Int

 

 

Field4

 

Numeric(18,4)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Function GetCreateStr()
Dim docOld As Document
Dim rngDoc As Range
Dim tblDoc As Table
Dim i As Integer, iIndex1 As Integer, iIndex2 As Integer
Dim myCell As Cell
Dim sTemp As String, sTemp1 As String, sTemp2 As String
Dim sHead As String
Dim sResult As String, sLength As String
Dim sDou As String, s1 As String
Dim sDou1 As String, sKey As String
Dim sTableName As String

sDou = """": sDou1 = "'"
If ActiveDocument.Tables.Count >= 1 Then
For i = 1 To ActiveDocument.Tables.Count
sTableName = ActiveDocument.Tables(i).Cell(1, 2).Range.Text
sTableName = Mid(sTableName, 1, Len(sTableName) - 2)
s1 = "USE [SocialKey]" & vbCrLf & vbCrLf & "GO " & vbCrLf & vbCrLf & _
"/****** 对象: Table [dbo].[" & sTableName & "] 脚本日期: " & Now & _
"******/" & vbCrLf & vbCrLf & _
"SET ANSI_NULLS ON " & vbCrLf & vbCrLf & _
"SET QUOTED_IDENTIFIER ON " & vbCrLf & _
"GO " & vbCrLf

sHead = s1 & vbctrl & "if exists (select * from dbo.sysobjects where id = object_id(N" & sDou1 & _
"[dbo].[" & sTableName & "]" & sDou1 & ") and OBJECTPROPERTY(id, N" & sDou1 & _
"IsUserTable" & sDou1 & ") = 1)" & vbCrLf & _
vbTab & " drop table [dbo].[" & sTableName & "]" & vbCrLf & _
"GO" & vbCrLf & _
"CREATE TABLE [dbo].[" & sTableName & "] ("

sTemp = "": sResult = ""

For j = 3 To ActiveDocument.Tables(i).Rows.Count
Set myCell = ActiveDocument.Tables(i).Cell(j, 1)
sTemp = Mid(myCell.Range.Text, 1, Len(myCell.Range.Text) - 2)
If Trim(sTemp) <> "" Then
sTemp = vbTab & "[" & sTemp & "]"

Set myCell = ActiveDocument.Tables(i).Cell(j, 3)
sTemp1 = Mid(myCell.Range.Text, 1, Len(myCell.Range.Text) - 2)
iIndex1 = InStr(sTemp1, "(")
If iIndex1 > 0 Then
iIndex2 = InStr(sTemp1, ")")
sLength = Mid(sTemp1, iIndex1 + 1, iIndex2 - iIndex1 - 1)
sTemp1 = Mid(sTemp1, 1, iIndex1 - 1)
sTemp2 = "[" & sTemp1 & "]" & " (" & sLength & ")" & " NULL" & ","

Else
sTemp2 = "[" & sTemp1 & "]" & " NULL" & ","
End If
sResult = sResult & sTemp & " " & sTemp2 & vbCrLf
End If
Next j
sResult = sHead & vbCrLf & sResult
Next i
End If
sResult = Mid(sResult, 1, Len(sResult) - 3) & vbCrLf & ")"
GetCreateStr = sResult
'Debug.Print GetCreateStr
End Function


Sub StrToFile(sContent As String, sFile As String)
Kill sFile '首先删除源文件
Open sFile For Append As #1 '打开文件
Print #1, sContent '写入文件
Close #1
End Sub



Private Sub CommandButton2_Click()
Dim sTemp As String, sPath As String
sTemp = GetCreateStr
'Debug.Print sTemp
sPath = Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 4)
'Debug.Print ActiveDocument.Path & sPath & ".txt"
Call StrToFile(sTemp, ActiveDocument.Path & "\" & sPath & ".txt")
End Sub

 

相关文章
|
1月前
|
SQL DataWorks NoSQL
DataWorks产品使用合集之如何将SQL Server中的数据转存到MongoDB
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
256 1
|
9天前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之数据集成时源头提供数据库自定义函数调用返回数据,数据源端是否可以写自定义SQL实现
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
8天前
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之使用sql查询一个表的分区数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
18天前
|
SQL 数据库
【SQL】已解决:SQL分组去重并合并相同数据
【SQL】已解决:SQL分组去重并合并相同数据
25 1
|
7天前
|
SQL 存储 Oracle
TDengine 3.3.2.0 发布:新增 UDT 及 Oracle、SQL Server 数据接入
**TDengine 3.3.2.0 发布摘要** - 开源与企业版均强化性能,提升WebSocket、stmt模式写入与查询效率,解决死锁,增强列显示。 - taos-explorer支持geometry和varbinary类型。 - 企业版引入UDT,允许自定义数据转换。 - 新增Oracle和SQL Server数据接入。 - 数据同步优化,支持压缩,提升元数据同步速度,错误信息细化,支持表名修改。 - 扩展跨平台支持,包括麒麟、Euler、Anolis OS等。
18 0
|
1月前
|
SQL druid Java
传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
24 1
|
1月前
|
SQL 数据库
零基础学习数据库SQL语句之操作表中数据的DML语句
零基础学习数据库SQL语句之操作表中数据的DML语句
21 0
零基础学习数据库SQL语句之操作表中数据的DML语句
|
1月前
|
SQL 存储 数据库
如何在SQL中添加数据:一个初学者指南
如何在SQL中添加数据:一个初学者指南
30 3
|
18天前
|
SQL 测试技术 数据库
【SQL】已解决:SQL错误(15048): 数据兼容级别有效值为100、110或120
【SQL】已解决:SQL错误(15048): 数据兼容级别有效值为100、110或120
20 0
|
1月前
|
SQL 数据管理 数据库
SQL 语言:数据操作
SQL 语言:数据操作
28 4