sql - ejemplo - Creación de tabla DDL desde Microsoft Access
instruccion create table (6)
¿Hay alguna manera fácil de recuperar DDL de creación de tablas de Microsoft Access (2007) o tengo que codificarlo usando VBA para leer la estructura de la tabla?
Tengo alrededor de 30 tablas que estamos migrando a Oracle y facilitaría la vida si pudiéramos crear las tablas a partir de las definiciones de acceso.
Es posible que desee buscar en ADOX para obtener la información del esquema. Usando ADOX puedes obtener cosas como las teclas, vistas, relaciones, etc.
Lamentablemente, no soy un programador de VB, pero hay muchos ejemplos en la web que usan ADOX para obtener el esquema de la tabla.
Gracias por las otras sugerencias. Mientras esperaba, escribí algunos códigos VBA para hacerlo. No es perfecto, pero hizo el trabajo por mí.
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
Nunca dije ser el programador de VB.
He hecho esto:
Hay una herramienta para "mejorar" de Access to SQL Server. Haga eso, luego use las excelentes herramientas de SQL Server para generar el script.
Puede usar la función de exportación en Access para exportar tablas a una fuente de datos ODBC. Configure una fuente de datos ODBC en la base de datos Oracle y luego haga clic con el botón derecho en la tabla en la pestaña "Tablas" de acceso y elija exportar. ODBC es uno de los "formatos de archivo"; luego mostrará el cuadro de diálogo ODBC habitual.
Use el SQL Workbench Migration Workbench de Oracle.
Hay un tutorial completo sobre la conversión de bases de datos de Access a Oracle disponible aquí . Si solo buscas las estructuras que buscas, entonces puedes concentrarte en la sección 3.0.
Un poco tarde para la fiesta, pero utilizo RazorSQL para generar bases de datos de DDL for Access.