2009-08-11 8 views
2

Ich habe eine große Sammlung von DBF-Dateien (etwa 1100 von ihnen), die ich für einen Client analysieren muss. Jede Datei enthält eine einzelne Tabelle. Ich muss eine Abfrage für jede Tabelle durchführen, die Ergebnisse in eine große Ergebnistabelle kopieren (in der die Ergebnisse aller Dateien enthalten sind) und dann mit der nächsten DBF-Datei fortfahren. Am Ende muss ich die Ergebnistabelle in einem Format speichern, das ich später bearbeiten kann. Kennt jemand eine Skriptsprache, die mir das leicht machen kann?Suche nach einer SQL-Skriptsprache zum Bearbeiten von DBF-Dateien

Es gibt ein paar Vorbehalte: 1.) Ich brauche etwas, das in Vista funktioniert (etwas, das in DOS läuft, Python oder GNU Octave ist auch in Ordnung). 2.) Ich bin kein Datenbankadministrator, aber ich habe ziemlich gute Programmierkenntnisse. 3.) Ich habe nur Grundkenntnisse in SQL. Ich kann die Abfragen schreiben, mein Problem ist das Öffnen der DBF-Dateien und Speichern der Ergebnisse. 4.) Ich habe dies tatsächlich mit MS Access erreicht, aber es ist eine chaotische Lösung. Ich suche also nach etwas, das Access nicht verwendet.

Ich habe in verschiedenen Skriptsprachen für SQL gelesen. Die meisten Seiten, die ich gesehen habe, befassen sich mit Servern, der Einrichtung von Beziehungen, Sicherheit und all diesen Dingen. Diese Probleme sind weit jenseits meines Verständnisses und sind nicht mein Anliegen. Ich möchte nur diese Dateien abfragen, meine Ergebnisse bekommen und rauskommen. Gibt es da draußen etwas, das für Anfänger leicht zugänglich ist, aber dennoch sehr stark ist?

Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Ich würde dies mit SSIS tun. Schleifen und Datentransformationen sind in SSIS relativ einfach.

+0

SSIS: SQL Server Integration Services http://msdn.microsoft.com/en-us /library/ms141026.aspx –

1

Meine erste Wahl wäre Visual FoxPro. Es handhabt .dbf-Dateien nativ, hat eine interaktive Umgebung und bietet SQL SELECT-Fähigkeit. Die SELECT-Anweisung hat eine INTO-Klausel, die Abfrageergebnisse an eine andere Tabelle sendet. Einige Arten von MSDN-Abonnements enthalten FoxPro auf den DVDs und stellen es zum Herunterladen von MSDN bereit.

dBASE ist auch verfügbar.

Bei Bedarf kann die Struktur der .dbf-Datei einfach mit Code bearbeitet werden. In der Vergangenheit musste ich Code schreiben, um .dbf-Dateien in C und Delphi zu modifizieren. Es war nie mehr als eine Nachmittagsarbeit. A Google Code Search wird wahrscheinlich .dbf-bezogenen Code für jede wichtige Programmiersprache ergeben. Das .dbf-Dateiformat und die zugehörigen Dateiformate sind unter MSDN dokumentiert.

1

Ich habe eine python dbf module geschrieben, die sehr rudimentäre SQL-Unterstützung hat. Auch wenn die SQL nicht Ihren Anforderungen entspricht, ist es einfach, die dbf-Dateien mit der Python-Syntax abzufragen.

Einige Beispiele:

import dbf 

Um eine Ergebnistabelle zu erstellen und fügen Sie Datensätze es:

results = dbf.Table('results_table', 'name C(50); amount N(10, 4)') 
record = results.append() 
with record: 
    record.name = 'something' 
    record.amount = 99.928 

# to open an existing table 
table = dbf.Table('some_dbf_table').open() 

# find all sales >= $10,000 
records = table.pql("select * where sales >= 10000") 

# find all transactions for customer names that start with Bob 
records = table.pql("select * where customer.startswith('Bob')") 

# nevermind thin sql veneer, just use python commands 
records = table.find("sales >= 10000 and customer.startswith('Bob')") 

# sum sales by customer 
customer_sales = default_dict(int) # if customer not already seen, will default to 0 
for record in table: 
    customer_sales[record.customer] += record.sales 

# now add to results table and print them out 
for name, total in sorted(customer_sales.items()): 
    result_record = results.append() 
    with result_record: 
     result_record.name = name 
     result_record.amount = total 
    print "%s: %s" % (name, total) 
+0

Wie funktioniert die Abfrage-Methode für dbf3-Tabellen? Kannst du ein Beispiel geben? – LarsVegas

+0

@LarsVegas: Genau wie die obigen Beispiele - sie funktionieren für alle unterstützten Versionen gleich. Wenn Sie eine ältere Version verwenden, wird die Datei '.sql (...)' anstelle von '.pql (...)' geschrieben. –

Verwandte Themen