sql – 从Microsoft Access创建表的DDL
发布时间:2020-12-12 16:41:34 所属栏目:MsSql教程 来源:网络整理
导读:有没有任何简单的方法从Microsoft Access(2007)检索表创建DDL,或者我必须使用VBA自己编写它来读取表结构? 我有大约30个表,我们正在移植到Oracle,如果我们可以从Access定义创建表,这将使生活更轻松. 解决方法 感谢其他建议.当我在等待时,我写了一些VBA代码来
有没有任何简单的方法从Microsoft Access(2007)检索表创建DDL,或者我必须使用VBA自己编写它来读取表结构?
我有大约30个表,我们正在移植到Oracle,如果我们可以从Access定义创建表,这将使生活更轻松. 解决方法感谢其他建议.当我在等待时,我写了一些VBA代码来做到这一点.这不是完美的,但为我做了工作.Option Compare Database Public Function TableCreateDDL(TableDef As TableDef) As String Dim fldDef As Field Dim FieldIndex As Integer Dim fldName As String,fldDataInfo As String Dim DDL As String Dim TableName As String TableName = TableDef.Name TableName = Replace(TableName," ","_") DDL = "create table " & TableName & "(" & vbCrLf With TableDef For FieldIndex = 0 To .Fields.Count - 1 Set fldDef = .Fields(FieldIndex) With fldDef fldName = .Name fldName = Replace(fldName,"_") Select Case .Type Case dbBoolean fldDataInfo = "nvarchar2" Case dbByte fldDataInfo = "number" Case dbInteger fldDataInfo = "number" Case dbLong fldDataInfo = "number" Case dbCurrency fldDataInfo = "number" Case dbSingle fldDataInfo = "number" Case dbDouble fldDataInfo = "number" Case dbDate fldDataInfo = "date" Case dbText fldDataInfo = "nvarchar2(" & Format$(.Size) & ")" Case dbLongBinary fldDataInfo = "****" Case dbMemo fldDataInfo = "****" Case dbGUID fldDataInfo = "nvarchar2(16)" End Select End With If FieldIndex > 0 Then DDL = DDL & "," & vbCrLf End If DDL = DDL & " " & fldName & " " & fldDataInfo Next FieldIndex End With DDL = DDL & ");" TableCreateDDL = DDL End Function Sub ExportAllTableCreateDDL() Dim lTbl As Long Dim dBase As Database Dim Handle As Integer Set dBase = CurrentDb Handle = FreeFile Open "c:exportTableCreateDDL.txt" For Output Access Write As #Handle For lTbl = 0 To dBase.TableDefs.Count - 1 'If the table name is a temporary or system table then ignore it If Left(dBase.TableDefs(lTbl).Name,1) = "~" Or _ Left(dBase.TableDefs(lTbl).Name,4) = "MSYS" Then '~ indicates a temporary table 'MSYS indicates a system level table Else Print #Handle,TableCreateDDL(dBase.TableDefs(lTbl)) End If Next lTbl Close Handle Set dBase = Nothing End Sub 我从来没有声称是VB程序员. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQLServer中char、varchar、nchar、nvarchar的区别
- 有没有像便携式SQL这样的东西?
- Mysql数据库双机热备难点分析
- @OrderBy导致java.lang.ClassCastException:antlr.CommonT
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC dl
- 使用 SQLServer 2000遇到的两个问题。
- SQLServer2005宝典学习笔记(数据操纵部分)
- 编辑非常大的sql转储/文本文件(在linux上)
- sql-server – EF:文本数据类型不能被选择为DISTINCT,因为
- SqlServer批量导入C#100万条数据仅4秒附源码