Чтение файлов базы данных Paradox
-
06-07-2019 - |
Вопрос
Я работаю с клиентом, у которого есть существующая система, построенная на том, что, по-видимому, является базой данных Paradox.У меня есть база данных в виде zip-файла, содержащего файлы .DB, .MB и .PX, по одному для каждой таблицы.
Мне нужно взять (некоторые) из этих данных и импортировать их в веб-приложение, использующее MySQL.У кого-нибудь есть способ извлечь эти данные, который не требует установки Paradox?
Если нет, экспортирует ли Paradox в каком-нибудь удобочитаемом формате?Либо как SQL, либо что-то, что может быть достаточно легко проанализировано?Человек, отвечающий за эту систему для моего клиента, является волонтером (они некоммерческие), поэтому я хотел бы обратиться к нему с решением - потому что в прошлый раз, когда я запрашивал данные, я получил это, что явно никуда не годится.
Решение
Платформы Paradox для DOS и Paradox для Windows будут экспортировать таблицы данных в текстовых форматах с разделителями, текст фиксированной длины и Lotus 1-2-3.Более старый Paradox для DOS также пишет Lotus Symphony, в то время как чуть менее древний Paradox для Windows делает сносный Excel 5.
Однако кому-то придется сесть и экспортировать таблицы одну за другой или написать для этого скрипт do.Конечно, для написания скрипта вам нужно было бы установить Paradox.
-Эл.
Другие советы
Тот Самый статья в Википедии о парадоксе перечислены две другие вещи, которые могут быть интересны, обе под лицензией GPL:
- pxlib:Библиотека для чтения и записи баз данных Paradox
- pxtools ( инструменты ):преобразование Paradox-базы данных в SQL-базу данных
И если у вас есть Delphi и вы хотите самостоятельно написать конвертер (для работы которого потребуется BDE), вы можете взглянуть на эта статья или в исходном коде Конвертируйте код на этом веб-сайте.Оба используют TClientDataSet, который может записывать CDS (двоичный формат) или XML-файл.
MS имеет инструкции по использованию драйвера MS Jet для чтения данных из файлов, созданных Paradox 3-5. Это может действовать как (по крайней мере) драйвер ODBC, так что вы можете использовать его для чтения файла Paradox из всего, что знает, как использовать ODBC.
У вас есть несколько вариантов:
<Ол>Я работал над гигантским переносом данных из Paradox в MySQL.Мой общий подход заключался в экспорте CSV-файлов из Paradox, а затем импорте CSV-файлов из командной строки MySQL.Однако эта система выходит из строя, когда в Paradox есть M полей (memo), потому что эти данные не попадают в CSV-файл, как ожидалось.
Вот мой многословный процесс получения данных Paradox в MySQL, надеюсь, это кому-нибудь поможет!
Откройте файл Paradox в Paradox, экспортируйте в файл dbase (.dbf).Что это делает, так это экспортирует данные memo в формат blob dbase.
Откройте файл .dbf в Paradox.Возможно, потребуется преобразовать формат double в длинное целое число или number перед открытием в dbfviewer.Похоже, что двойной формат не работает.Сохраните файл.
Используйте эту программу, чтобы открыть файл dbase и затем экспортировать его в 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-файлов, заключенных в двойные кавычки:
Вложенный CSV-файл ()
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 с текстовыми полями, куда мы хотим поместить большие двоичные объекты
В командной строке MySQL вот пример того, как выполнить импорт:
ЗАГРУЗИТЬ ЛОКАЛЬНЫЙ ФАЙЛ ДАННЫХ 'C:/data.csv' В ТАБЛИЦУ имя_таблицы ПОЛЯ ЗАКАНЧИВАЮТСЯ НА ',' ЗАКЛЮЧЕНЫ В '"' СТРОКИ ЗАКАНЧИВАЮТСЯ НА ' ' (столбец 1, столбец 2)
Paradox - это нативный формат для Borland Database Engine, который включен в различные программные продукты Delphi. Владение перешло к другому владельцу, по крайней мере, один раз в последнее время, но в один прекрасный момент появились бесплатные «Экспресс» Доступны версии Delphi, которые позволят вам написать простую программу для экспорта этого материала. Если бесплатная версия больше не доступна, самый низкий доступный SKU должен включать функциональность BDE.
Используя 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"