是否有任何简单的方法从Microsoft Access(2007)检索表创建DDL,还是我必须自己使用VBA编码来读取表结构?从Microsoft Access表创建DDL
我有大约30个表,我们正在移植到Oracle,如果我们可以从Access定义中创建表,它会使生活更轻松。
是否有任何简单的方法从Microsoft Access(2007)检索表创建DDL,还是我必须自己使用VBA编码来读取表结构?从Microsoft Access表创建DDL
我有大约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:\export\TableCreateDDL.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程序员。
我已经做到了这一点:
有从Access到SQL Server的 “升迁” 的工具。做到这一点,然后使用优秀的SQL Server工具来生成脚本。
这不相关! – 2009-09-09 11:44:03
@iDevlop - 它*是*相关,但也许我没有解释正确。原始问题询问是否有创建脚本的方法,或者是否必须手动编写脚本。如果你按照我的指示,你让MS SQL Server为你生成脚本。您仍然需要手动调整Access,但SQL Server技巧会为您带来90%的优势。 – 2009-09-10 02:08:36
您可以使用导出功能在Access中的表导出到一个ODBC数据源。将ODBC数据源设置为Oracle数据库,然后右键单击Access“表”选项卡中的表并选择导出。 ODBC是“文件格式”之一 - 它将带来通常的ODBC对话框。
您可能想要查看ADOX以获取架构信息。使用ADOX,您可以获得诸如按键,视图,关系等的东西。
不幸的是,我不是一个VB程序员,但在Web上使用ADOX获取表格模式的例子很多。
使用Oracle的SQL Developer迁移工作台。
有关于将Access数据库转换为Oracle的完整教程here。如果只有它的结构,那么你可以专注于3.0节。
晚会有点晚,但我使用RazorSQL为Access数据库生成DDL。
不工作的十进制领域 – Peter 2009-10-28 12:10:32