Jetez un œil à https://github.com/harelba/q, un outil Python pour traiter le texte comme une base de données. Par défaut, il utilise des espaces pour délimiter les champs, mais le -d ,
lui permettra de traiter les fichiers CSV.
Vous pouvez également importer le fichier CSV dans SQLite, puis exécuter des commandes SQL dessus. Ceci est scriptable, avec un peu d'effort.
Il y a aussi csvsql (partie de csvkit) !
Il peut non seulement exécuter sql sur un csv donné (le convertir en sqlite dans les coulisses), mais également convertir et insérer dans l'une des nombreuses bases de données sql prises en charge !
Ici, vous avez un exemple de commande (également dans 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]"
montrant comment joindre trois tables (disponible dans csv_inputs dans csv_dbs_examples).
(le formatage avec csvlook fait également partie de csvkit)
Entrées
$ 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
Produit :
| CDTitle | Location | Artist |
| -------- | --------- | ------- |
| CDTitle1 | Location1 | Artist1 |
| CDTitle2 | Location2 | Artist1 |
| CDTitle3 | Location1 | Artist2 |
| CDTitle4 | Location2 | Artist2 |