Werfen Sie einen Blick auf https://github.com/harelba/q, ein Python-Tool zur Behandlung von Text als Datenbank. Standardmäßig werden Leerzeichen zum Trennen von Feldern verwendet, aber der -d ,
-Parameter ermöglicht die Verarbeitung von CSV-Dateien.
Alternativ können Sie die CSV-Datei in SQLite importieren und dann SQL-Befehle darauf ausführen. Dies ist mit etwas Aufwand skriptfähig.
Es gibt auch csvsql (Teil von csvkit)!
Es kann nicht nur SQL auf einer gegebenen CSV-Datei ausführen (und es hinter den Kulissen in SQLite konvertieren), sondern auch konvertieren und in eine von vielen unterstützten SQL-Datenbanken einfügen!
Hier haben Sie einen Beispielbefehl (auch in csvsql_CDs_join.sh):
csvsql --query 'SELECT CDTitle,Location,Artist FROM CDs JOIN Artists ON CDs.ArtistID=Artists.ArtistID JOIN Locations ON CDs.LocID = Locations.LocID' "[email protected]"
zeigt, wie man drei Tabellen verbindet (verfügbar in csv_inputs in csv_dbs_examples).
(Formatierung mit csvlook auch Teil von csvkit)
Eingaben
$ csvlook csv_inputs/CDs.csv
| CDTitle | ArtistID | LocID |
| -------- | -------- | ----- |
| CDTitle1 | A1 | L1 |
| CDTitle2 | A1 | L2 |
| CDTitle3 | A2 | L1 |
| CDTitle4 | A2 | L2 |
$ csvlook csv_inputs/Artists.csv
| ArtistID | Artist |
| -------- | ------- |
| A1 | Artist1 |
| A2 | Artist2 |
$ csvlook csv_inputs/Locations.csv
| LocID | Location |
| ----- | --------- |
| L1 | Location1 |
| L2 | Location2 |
csvsql
$ csvsql --query 'SELECT CDTitle,Location,Artist FROM CDs JOIN Artists ON CDs.ArtistID=Artists.ArtistID JOIN Locations ON CDs.LocID = Locations.LocID' "[email protected]" | csvlook
Erzeugt:
| CDTitle | Location | Artist |
| -------- | --------- | ------- |
| CDTitle1 | Location1 | Artist1 |
| CDTitle2 | Location2 | Artist1 |
| CDTitle3 | Location1 | Artist2 |
| CDTitle4 | Location2 | Artist2 |