GNU/Linux >> Znalost Linux >  >> Linux

Čtení souboru CSV s SQL dotazy z linuxového shellu

Podívejte se na https://github.com/harelba/q, nástroj Pythonu pro zacházení s textem jako s databází. Ve výchozím nastavení používá k oddělování polí mezery, ale -d , mu umožní zpracovávat soubory CSV.

Případně můžete importovat soubor CSV do SQLite a poté proti němu spustit příkazy SQL. Toto je skriptovatelné, s trochou úsilí.


Existuje také csvsql (součást csvkit)!

Dokáže nejen spouštět sql na daném csv (převést jej na sqlite v pozadí), ale také převést a vložit do jedné z mnoha podporovaných SQL databází!

Zde máte příklad příkazu (také v 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]"

ukazuje, jak spojit tři tabulky (dostupné v csv_inputs v csv_dbs_examples).

(formátování pomocí csvlook je také součástí csvkit)

Vstupy

$ 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

Vyrábí:

| CDTitle  | Location  | Artist  |
| -------- | --------- | ------- |
| CDTitle1 | Location1 | Artist1 |
| CDTitle2 | Location2 | Artist1 |
| CDTitle3 | Location1 | Artist2 |
| CDTitle4 | Location2 | Artist2 |

Linux
  1. 4 kroky k vytvoření uživatelů Linuxu ze souboru csv pomocí Ansible

  2. Čtení řádků ze souboru s Bash:For vs. Zatímco?

  3. Čtení Grepových vzorů ze souboru?

  1. Zkontrolujte oprávnění souborů Linux pomocí ls

  2. Jak změnit slovo v souboru pomocí skriptu linux shell

  3. Šablony s Linuxem ve skriptu Shell?

  1. Třídit příkaz v Linuxu s příklady

  2. Oprávnění souborů v Linuxu s příkladem

  3. Linuxový shell získá hodnotu pole ze souboru yml