Show HN: SQLite query inside a Bash function

https://news.ycombinator.com/item?id=27762201
by chmaynard • 5 years ago
134 62 5 years ago

Part of the workflow for building my website is the generation of a table in tab-separated column format (.tsv). The source data is found in four other .tsv files. I use an SQLite query to perform a 4-way join and write out the new table. For convenience, I wrote a script that encapsulates the query inside a Bash function.

The example below illustrates this technique.

    repertoire() {
      pushd $CMM_SOURCES/_data
      sqlite3 <<EOS

    .headers on
    .mode tabs
    .import category.tsv category
    .import composition.tsv composition
    .import concert.tsv concert
    .import program.tsv program
    .once repertoire.tsv

    SELECT 
      category.name AS category, 
      composition.key, 
      composition.composer, 
      composition.name AS composition, 
      concert.name AS concert
    FROM 
      category, 
      concert, 
      composition, 
      program
    WHERE 
      julianday(concert.date) < julianday('now')
      AND composition.category = category.name
      AND program.key = composition.key
      AND program.date = concert.date
    ORDER BY 
      category.sequence, 
      composition.key
    ;

    EOS
      popd
    }

Related Stories

Loading related stories...

Source preview

news.ycombinator.com