Visual Foxpro: Zugriff auf eine alte Datenbank
Hallo zusammen,
ich habe noch eine uralte Visual Foxpro Datenbank, welche sich leider auch nicht kurzfristig ablösen lässt.
Leider habe ich von Visual Foxpro so gut wie keine Ahnung und benötige daher einmal Eure Hilfe:
In der Datenbank gibt es eine Tabelle die sich "lock" nennet. Da drin sind Sperren eingetragen, von einige einmal Nachts gelöscht werden sollen.
Für die Tabelle gibt es eine Datei mit dem Namen "lock.dbf" und eine "lock.cdx"
Wie gehe ich jetzt am besten per Script an diese Tabellen ran? Mein Ziel ist es, per Script einen Delet Befehl an die Tabelle zu senden und damit die gesperrten Datensätze wieder frei "zuschalten"
Meine erste Überlegung ist, die Datenbank per ODBC Verbindung in Powershell zu öffnen. Leider scheitere ich immer wieder daran, das ich die ODBC Verbindung nicht geöffnet bekomme
Die Verbindung ist als User DSN angelegt:
Hat jemand eine Idee? Gerne auch in einer anderen Sprache.
Dann habe ich Abschließend noch eine allgemeine Frage:
die dbf ist soweit ich das verstanden habe die eigentliche Tabelle die cdx der Index dazu. Muss ich nach dem Löschen etwas tun, um den Index wieder neu aufzubauen oder ähnliches?
Vielen Dank vorab.
ich habe noch eine uralte Visual Foxpro Datenbank, welche sich leider auch nicht kurzfristig ablösen lässt.
Leider habe ich von Visual Foxpro so gut wie keine Ahnung und benötige daher einmal Eure Hilfe:
In der Datenbank gibt es eine Tabelle die sich "lock" nennet. Da drin sind Sperren eingetragen, von einige einmal Nachts gelöscht werden sollen.
Für die Tabelle gibt es eine Datei mit dem Namen "lock.dbf" und eine "lock.cdx"
Wie gehe ich jetzt am besten per Script an diese Tabellen ran? Mein Ziel ist es, per Script einen Delet Befehl an die Tabelle zu senden und damit die gesperrten Datensätze wieder frei "zuschalten"
Meine erste Überlegung ist, die Datenbank per ODBC Verbindung in Powershell zu öffnen. Leider scheitere ich immer wieder daran, das ich die ODBC Verbindung nicht geöffnet bekomme
$conn = new-object system.data.odbc.odbcconnection
$conn.connectionstring = "DSN=Test;"
$conn.open()
Ausnahme beim Aufrufen von "Open" mit 0 Argument(en): "ERROR [IM002] [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein
Standardtreiber angegeben"
Hat jemand eine Idee? Gerne auch in einer anderen Sprache.
Dann habe ich Abschließend noch eine allgemeine Frage:
die dbf ist soweit ich das verstanden habe die eigentliche Tabelle die cdx der Index dazu. Muss ich nach dem Löschen etwas tun, um den Index wieder neu aufzubauen oder ähnliches?
Vielen Dank vorab.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1695894222
Url: https://administrator.de/contentid/1695894222
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
3 Kommentare
Neuester Kommentar
Kommt drauf an welche Treiber auf deinem System vorhanden sind, dementsprechend den Connection-String an den Treiber anpassen
https://www.connectionstrings.com/dbf-foxpro/
Damit klappt das hier im Test. (ne Extra ODBC Datenquelle ist hierbei überflüssig)
https://www.connectionstrings.com/dbf-foxpro/
$db = New-Object System.Data.OleDb.OleDbConnection
$db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test;Extended Properties=dBASE IV;User ID=Admin;Password=;"
$db.Open()
$cmd = $db.CreateCommand()
$cmd.Connection = $db
$cmd.CommandText = "Select * From MyTable"
$da = New-Object System.Data.OleDb.OleDbDataAdapter
$da.SelectCommand = $cmd
$dt = New-Object System.Data.DataTable
[void]$da.Fill($dt)
$dt
$db.Close()
$db.Dispose()