Lettura dei file del database Paradox
-
06-07-2019 - |
Domanda
Sto lavorando con un client che ha un sistema esistente, basato su quello che è apparentemente un database Paradox. Ho il database, sotto forma di un file zip contenente file .DB, .MB e .PX, uno per ogni tabella.
Devo prendere (alcuni) di questi dati e importarli in un'applicazione Web che utilizza MySQL. Qualcuno ha un modo per me di estrarre questi dati, che non comporta l'installazione di Paradox?
In caso contrario, Paradox esporta in un formato leggibile? O come SQL o qualcosa che può essere analizzato abbastanza facilmente? Il responsabile di questo sistema per il mio cliente è un volontario (sono senza scopo di lucro), quindi mi piacerebbe andare da lui con una soluzione - perché l'ultima volta che ho chiesto i dati, ho ottenuto questo, che chiaramente non va bene.
Soluzione
Entrambe le piattaforme Paradox per DOS e Paradox per Windows esporteranno le tabelle di dati nei formati Testo delimitato, Testo a lunghezza fissa e Lotus 1-2-3. Il vecchio Paradox per DOS scrive anche Lotus Symphony, mentre il Paradox per Windows leggermente meno antico fa un passabile Excel 5.
Tuttavia, qualcuno dovrà sedersi ed esportare i tavoli uno per uno, o scrivere uno script per farlo. Ovviamente dovresti avere Paradox installato per scrivere lo script.
-Al.
Altri suggerimenti
l'articolo di Wikipedia su Paradox elenca altre due cose, che potrebbero essere interessante, entrambi con licenza GPL:
- pxlib: libreria per leggere e scrivere database Paradox
- pxtools: converti un database Paradox in un database SQL
E se hai Delphi e vuoi scrivere tu stesso un convertitore (che avrebbe bisogno del BDE per funzionare) puoi dare un'occhiata a questo articolo o al codice sorgente di ConvertCodeLib su questo web sito . Entrambi utilizzano TClientDataset, che può scrivere un CDS (formato binario) o un file XML.
MS ha istruzioni per l'utilizzo del driver MS Jet per leggere i dati dai file prodotti da Paradox 3-5. Questo può agire come (almeno) un driver ODBC, quindi puoi usarlo per leggere un file Paradox da qualsiasi cosa sappia usare ODBC.
Hai alcune opzioni:
- Metti le mani sul software Paradox originale e usalo per esportare il database in CSV formato. Sfortunatamente, Borland non lo vende più e la versione più recente non funziona bene su Windows XP o versioni successive.
- Accedi al database usando un driver ODBC Paradox o dBase / xBase. Paradox e xBase sono molto simili, quindi potresti essere in grado di estrarre i dati usando i driver pensati per entrambi. Potresti essere in grado di ottenere un driver ODBC Paradox da qualche parte su firebirdsql.org .
- Usa Borland Delphi per scrivere un programma che esporterà i dati di cui hai bisogno. Come è stato detto da qualcun altro, puoi ottenere una versione gratuita chiamata Turbo Explorer . Dovrai anche installare BDE separatamente, poiché non viene fornito con Turbo Explorer.
Ho lavorato su una gigantesca migrazione di dati da Paradox a MySQL. Il mio approccio generale è stato quello di esportare file CSV da Paradox e quindi importare i file CSV dalla riga di comando di MySQL. Tuttavia, questo sistema si guasta quando ci sono campi M (memo) in Paradox, perché i dati non vengono inseriti nel file CSV come previsto.
Ecco il mio lungo processo per portare i dati di Paradox in MySQL, speriamo che aiuti qualcuno!
-
Apri il file Paradox in Paradox, esporta in file dbase (.dbf). Ciò consente di esportare i dati del memo nel formato BLOB di dbase.
-
Apri il file .dbf in Paradox. Potrebbe essere necessario convertire il doppio formato in numero intero o numero lungo prima dell'apertura in dbfviewer. Il doppio formato sembra non funzionare. Salva file.
-
Utilizza questo programma per aprire il file dbase ed esportarlo in Excel: http://dbfviewer.org/ Esporta - > File XLS & # 8230; questo lo apre in Excel
-
Ora dobbiamo creare una macro perché Excel non ha alcun modo nativo per racchiudere i campi CSV tra virgolette o altro. Ho incollato la macro qui sotto, ma qui ci sono i siti di riferimento che ho trovato. Un sito aveva istruzioni migliori ma testo corrotto: 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/
-
In Excel sostituisci tutto " con "di CTRL-F, sostituisci ... qualsiasi " nei record rovinerà le cose
-
In Excel premere ALT - F11 per aprire le macro Inserisci - > Modulo Crea questa macro per salvare i file CSV racchiusi tra virgolette doppie:
File CSV secondario ()
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
-
Quindi Esegui - > Esegui macro
-
Imposta lo schema db MySQL di destinazione con campi di testo dove vogliamo che vadano i BLOB
-
Nella riga di comando di MySQL ecco un esempio di come eseguire l'importazione:
DATI DI CARICO INFILE LOCALE 'C: /data.csv' INTO TABLE table_name CAMPI TERMINATI DA ',' INCLUSO DA """ LINEE TERMINATE DA '\ r \ n' (colonna1, colonna2)
Paradox è un formato nativo per il motore di database Borland, incluso in vari prodotti di programmazione Delphi. La proprietà è cambiata di mano almeno una volta di recente, ma a un certo punto c'erano "Express" gratuiti. versioni di Delphi disponibili che ti permetteranno di scrivere un semplice programma per esportare queste cose. Se una versione gratuita non è più disponibile, lo SKU disponibile più basso dovrebbe includere la funzionalità BDE.
Usando MS Access 2007 puoi importare Paradox 7 e versioni precedenti usando la distribuzione BDE inclusa con il programma gratuito Paradox Database Editor (google it). Utilizzare una connessione come:
DoCmd.TransferDatabase acImport, "ODBC Database", _
"Paradox 3.X;HDR=NO;IMEX=2;ACCDB=YES;DATABASE=C:\apache\Archive;TABLE=Messages#db", _
acReport, DailyArchiveName, "MyDatabase"