Eche un vistazo a https://github.com/harelba/q, una herramienta de Python para tratar el texto como una base de datos. Por defecto usa espacios para delimitar campos, pero el -d ,
El parámetro le permitirá procesar archivos CSV.
Alternativamente, puede importar el archivo CSV a SQLite y luego ejecutar comandos SQL en él. Esto es programable, con un poco de esfuerzo.
¡También hay csvsql (parte de csvkit)!
¡No solo puede ejecutar sql en csv dado (convirtiéndolo en sqlite detrás de escena), sino también convertirlo e insertarlo en una de las muchas bases de datos sql compatibles!
Aquí tienes un comando de ejemplo (también en 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]"
mostrando cómo unir tres tablas (disponible en csv_inputs en csv_dbs_examples).
(formatear con csvlook también forma parte de csvkit)
Entradas
$ 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
Produce:
| CDTitle | Location | Artist |
| -------- | --------- | ------- |
| CDTitle1 | Location1 | Artist1 |
| CDTitle2 | Location2 | Artist1 |
| CDTitle3 | Location1 | Artist2 |
| CDTitle4 | Location2 | Artist2 |