Чтение файлов базы данных Paradox - PullRequest
8 голосов
/ 24 октября 2009

Я работаю с клиентом, у которого есть существующая система, построенная на базе базы данных Paradox. У меня есть база данных в виде zip-файла, содержащего файлы .DB, .MB и .PX, по одному для каждой таблицы.

Мне нужно взять (некоторые) эти данные и импортировать их в веб-приложение, использующее MySQL. У кого-нибудь есть способ извлечь эти данные, не включая установку Paradox?

Если нет, экспортирует ли Paradox какой-либо читаемый формат? Или как SQL, или как что-то, что может быть проанализировано достаточно легко? Ответственный за эту систему для моего клиента - волонтер (они некоммерческие), поэтому я хотел бы обратиться к нему с решением - потому что в прошлый раз, когда я запрашивал данные, я получил это, которое явно не годится.

Ответы [ 7 ]

3 голосов
/ 22 сентября 2010

В статье в Википедии о Paradox перечислены две другие вещи, которые могут быть интересными, оба под лицензией GPL:

А если у вас есть Delphi и вы хотите написать конвертер самостоятельно (для работы которого потребуется BDE), вы можете посмотреть эту статью или исходный код ConvertCodeLib для этого веб-сайт . Оба используют TClientDataset, который может записать CDS (двоичный формат) или файл XML.

2 голосов
/ 29 октября 2009

И Paradox для DOS, и Paradox для платформ Windows будут экспортировать таблицы данных в форматах с разделителями, в тексте с фиксированной длиной и в форматах Lotus 1-2-3. Более старый Paradox для DOS также пишет Lotus Symphony, в то время как немного менее старинный Paradox для Windows делает сносный Excel 5.

Однако кто-то должен будет сесть и экспортировать таблицы одну за другой или написать сценарий для этого. Конечно, для написания сценария вам нужно установить Paradox.

-Аль.

1 голос
/ 16 июля 2012

Я работал над гигантской миграцией данных из Paradox в MySQL. Мой общий подход состоял в том, чтобы экспортировать файлы CSV из Paradox, а затем импортировать файлы CSV из командной строки MySQL. Однако эта система выходит из строя, когда в Paradox есть M (memo) поля, потому что эти данные не попадают в CSV-файл, как ожидалось.

Вот мой скучный процесс ввода данных Paradox в MySQL, надеюсь, он кому-нибудь поможет!

  • Открыть файл Paradox в Paradox, экспортировать в файл dbase (.dbf). Он экспортирует данные заметок в формат BLOB-объектов dbase.

  • Откройте файл .dbf в Paradox. Может потребоваться преобразовать двойной формат в длинное целое или число перед открытием в dbfviewer. Двойной формат не работает. Сохранить файл.

  • Используйте эту программу, чтобы открыть файл базы данных и затем экспортировать в Excel: http://dbfviewer.org/ Экспорт -> XLS-файл ... это открывает его в Excel

  • Теперь нам нужно создать макрос, потому что в Excel нет собственного способа заключить CSV-поля в кавычки или что-то еще. Я вставил макрос ниже, но вот ссылки, которые я нашел. На одном сайте были лучшие инструкции, но поврежденный текст: http://www.mrexcel.com/forum/showthread.php?320531-export-as-csv-file-enclosed-quotes http://www.markinns.com/articles/full/export_excel_csvs_with_double_quotes/

  • В Excel замените все "с" на CTRL-F, замените ... любой "в записях, что приведет к путанице

  • В Excel нажмите ALT - F11, чтобы открыть макросы Вставить -> Модуль Создайте этот макрос для сохранения файлов CSV, заключенных в двойные кавычки:

    Sub CSVFile ()

    Dim SrcRg As Range
    Dim CurrRow As Range
    Dim CurrCell As Range
    Dim CurrTextStr As String
    Dim ListSep As String
    Dim FName As Variant
    FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
    
    If FName <> False Then
    ListSep = Application.International(xlListSeparator)
    If Selection.Cells.Count > 1 Then
    Set SrcRg = Selection
    Else
    Set SrcRg = ActiveSheet.UsedRange
    End If
    Open FName For Output As #1
    For Each CurrRow In SrcRg.Rows
    CurrTextStr = ""
    For Each CurrCell In CurrRow.Cells
    CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep
    Next
    While Right(CurrTextStr, 1) = ListSep
    CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
    Wend
    Print #1, CurrTextStr
    Next
    Close #1
    End If
    End Sub
    
  • Затем запустить -> Выполнить макрос

  • Установить целевую схему базы данных MySQL с текстовыми полями, куда мы хотим, чтобы BLOB-объекты шли

  • В командной строке MySQL приведен пример выполнения импорта:

    ЗАГРУЗИТЬ ДАННЫЙ ЛОКАЛЬНЫЙ ИНФИЛЬ 'C: /data.csv' INTO TABLE table_name ПОЛЯ, ПРЕКРАЩЕННЫЕ ',' ЗАКРЫТО " ЛИНИИ, ПРЕКРАЩЕННЫЕ '\ r \ n' (столбец1, столбец2)

1 голос
/ 12 ноября 2009

У вас есть несколько вариантов:

  1. Возьмите в руки оригинальное программное обеспечение Paradox и используйте его для экспорта базы данных в формат CSV . К сожалению, Borland больше не продает его, и последняя версия не работает на Windows XP или выше.
  2. Доступ к базе данных с использованием драйвера ODBC Paradox или dBase / xBase. Paradox и xBase очень похожи, поэтому вы можете извлечь данные, используя драйверы, предназначенные для любого из них. Вы можете получить драйвер ODBC для Paradox где-нибудь на firebirdsql.org .
  3. Используйте Borland Delphi для написания программы, которая будет экспортировать нужные вам данные. Как уже упоминалось, вы можете получить бесплатную версию под названием Turbo Explorer . Вам также придется установить BDE отдельно, так как он не поставляется с Turbo Explorer.
1 голос
/ 24 октября 2009

MS имеет инструкции для использования драйвера MS Jet для чтения данных из файлов, созданных Paradox 3-5. Это может действовать как (по крайней мере) драйвер ODBC, так что вы можете использовать его для чтения файла Paradox из всего, что знает, как использовать ODBC.

0 голосов
/ 20 июня 2010

Используя MS Access 2007, вы можете импортировать Paradox 7 и ниже, используя дистрибутив BDE, включенный в бесплатную программу Paradox Database Editor (Google google it). Используйте соединение, такое как:

DoCmd.TransferDatabase acImport, "ODBC Database", _
    "Paradox 3.X;HDR=NO;IMEX=2;ACCDB=YES;DATABASE=C:\apache\Archive;TABLE=Messages#db", _
    acReport, DailyArchiveName, "MyDatabase"
0 голосов
/ 24 октября 2009

Paradox - это собственный формат для Borland Database Engine, который включен в различные программные продукты Delphi. Владение перешло к другому владельцу, по крайней мере, один раз в последнее время, но в какой-то момент были доступны бесплатные «Экспресс» версии Delphi, которые позволили бы вам написать простую программу для экспорта этого материала. Если бесплатная версия больше не доступна, самый низкий доступный SKU должен включать функциональность BDE.

...