Создание таблицы DDL из Microsoft Access - PullRequest
14 голосов
/ 06 октября 2008

Есть ли какой-нибудь простой способ получить DDL для создания таблицы из Microsoft Access (2007), или мне нужно самому кодировать ее, используя VBA для чтения структуры таблицы?

У меня есть около 30 таблиц, которые мы переносим в Oracle, и было бы проще, если бы мы могли создавать таблицы из определений Access.

Ответы [ 6 ]

19 голосов
/ 06 октября 2008

Спасибо за другие предложения. Пока я ждал, я написал код 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.

3 голосов
/ 06 октября 2008

Я сделал это:

Есть инструмент для "увеличения" от Access до SQL Server. Сделайте это, а затем используйте отличные инструменты SQL Server для генерации скрипта.

http://support.microsoft.com/kb/237980

2 голосов
/ 06 октября 2008

Использование Oracle SQL Developer Migration Workbench.

Полное руководство по преобразованию баз данных Access в Oracle доступно здесь . Если вам нужны только структуры, тогда вы можете сосредоточиться на разделе 3.0.

1 голос
/ 06 октября 2008

Возможно, вы захотите заглянуть в ADOX, чтобы получить информацию о схеме. Используя ADOX, вы можете получать такие вещи, как ключи, представления, отношения и т. Д.

К сожалению, я не программист на VB, но в Интернете есть множество примеров использования ADOX для получения схемы таблицы.

1 голос
/ 06 октября 2008

Вы можете использовать функцию экспорта в Access для экспорта таблиц в источник данных ODBC. Настройте источник данных ODBC для базы данных Oracle, затем щелкните правой кнопкой мыши таблицу на вкладке «Таблицы» и выберите «Экспорт». ODBC - это один из «форматов файлов», который затем вызовет обычный диалог ODBC.

0 голосов
/ 17 августа 2017

Немного опоздал на вечеринку, но я использую RazorSQL для создания DDL для баз данных Access.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...