GNU/Linux >> Linux Esercitazione >  >> Linux

Lettura di un file CSV con query SQL dalla shell Linux

Dai un'occhiata a https://github.com/harelba/q, uno strumento Python per trattare il testo come un database. Di default usa gli spazi per delimitare i campi, ma il -d , parametro gli consentirà di elaborare i file CSV.

In alternativa, puoi importare il file CSV in SQLite e quindi eseguire i comandi SQL su di esso. Questo è scriptabile, con un po' di sforzo.


C'è anche csvsql (parte di csvkit)!

Non solo può eseguire sql su un determinato csv (convertendolo in sqlite dietro le quinte), ma anche convertire e inserire in uno dei tanti database sql supportati!

Ecco il comando di esempio (anche 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]"

che mostra come unire tre tabelle (disponibile in csv_inputs in csv_dbs_examples).

(anche la formattazione con csvlook fa parte di csvkit)

Ingressi

$ 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 |

Linux
  1. Ordina il comando in Linux con esempi

  2. Lettura di righe da un file con Bash:per vs. Mentre?

  3. Permessi dei file in Linux con esempio

  4. Come cambiare una parola in un file con lo script della shell linux

  5. La shell Linux ottiene il valore di un campo da un file yml

Come rimuovere (^M) caratteri da un file in Linux

Utilizzo del comando Linux mv con esempi

Proteggi Linux con il file Sudoers

Comando di montaggio Linux con esempi

Comando gawk Linux con esempi

Linux make Command con esempi