Hallo zusammen,
ich hoffe, die Frage past in dieses Unterforum. Falls nicht, gerne Hinweis geben oder verschieben.
Situation: Zur Auswertung von Daten für ein wissenschaftliches Projekt habe ich gerade zahlreiche Dateien erhalten und frage mich, wie ich diese am besten in eine MySQL-Datenbank bringe, um einige Auswertungen darauf zu machen. Der Aufbau der Dateien sieht wie folgt aus:
1 2 3 4 5 6 7 8 | Datei1.tar.gz -> Messungen1.txt -> Messungen2.txt -> Messungen3.txt Datei1.tar.gz -> Messungen1.txt -> Messungen2.txt -> Messungen3.txt |
Innerhalb der TXT-Dateien sind jeweils zwei Werte enthalten, die durch einen (teils unterschiedlichen) Seperator (z.B. # oder . oder : oder 😉 getrennt sind. Beispiel:
1 2 3 4 5 | WertX#WertY WertX#WertY WertX#WertY WertX#WertY WertX#WertY |
Insgesamt sprechen wir von über 100 GB Rohdaten, Tendenz steigend. Die auf die Datenmengen gestellten Abfragen sind sehr überschaubar (> 100) und werden manuell gestellt.
Anforderungen: - Ich würde innerhalb der Datenbank gerne "simple" SQL-Abfragen stellen, à la
–> Wie oft kommt Wert X vor
–> Suche Tuppel, in denen Wert X zwischen 21 und 42 ist
–> etc.
- Gleichzeitig möchte ich nachvollziehen können, welche Tuppel aus welcher ursprünglichen *.tar.gz Datei stammen.
- Die Abfragen sollen i.d.R. sämtliche Werte umfassen. Abfragen, die nur die Werte aus einer Ursprungsdatei enthalten sind die Seltenheit, kommen jedoch vor.
Frage 1: Wie würdet ihr das in MySQL umsetzen? Erstellen von Tabellen mit dem Tabellennamen "Name-der-ursprünglichen-*tar.gz-Datei" und diese dann mergen? Oder Erstellung einer großen Tabelle mit den Feldern "Name der Ursprungsdatei", "WertX", "WertY"?
Frage 2: Die Daten würde ich in die MySQL Datenbank gerne über die Shell eingeben. Die Nutzung von
mysql --user=$DB_USER --password=$DB_PASSWD $DB_NAME INSERT INTO [...]
scheint mir in Anbetracht der doch eher unüberschaubaren Datenmenge nicht zwingend zielführend, weswegen ich eher ein kleines Perl-Skript schreiben würde. Oder übersehe ich hier etwas?
Abschließende Frage: Ist das Vorgehen aus Eurer Sicht so sinnvoll? Oder kommt man hier mit ein bisschen Kommandozeilen-Hacking (oder einer komplett anderen Lösung) ebenfalls an das gewünschte Ziel?