initial commit
This commit is contained in:
commit
7335d9359a
58
sqlite-csv.fish
Normal file
58
sqlite-csv.fish
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
|
||||||
|
function sqlite-csv
|
||||||
|
argparse --exclusive csv,md,json json csv md 'sep=?' help -- $argv
|
||||||
|
if set -q _flag_help
|
||||||
|
echo "\
|
||||||
|
Usage: sqlite-csv [options] [<csv>] [<sql-command>]
|
||||||
|
|
||||||
|
If no <csv> file is specified, it will be read from stdin.
|
||||||
|
If no <sql-command> is specified, uses 'select * from data'.
|
||||||
|
If no output format is specified, uses ASCII box rendering.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--csv output as CSV using a , separator
|
||||||
|
--md ouput as markdown
|
||||||
|
--json output as JSON
|
||||||
|
--sep=SEP use SEP as the column separator when reading the CSV file (e.g. --sep=';')
|
||||||
|
--help show this message and exit
|
||||||
|
|
||||||
|
The imported CSV table is named `data`.
|
||||||
|
|
||||||
|
Example: sqlite-csv --md summary.csv 'select * from data order by name'"
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if set -q _flag_csv
|
||||||
|
set outputMode "csv"
|
||||||
|
else if set -q _flag_md
|
||||||
|
set outputMode "markdown"
|
||||||
|
else if set -q _flag_json
|
||||||
|
set outputMode "json"
|
||||||
|
else
|
||||||
|
set outputMode "box"
|
||||||
|
end
|
||||||
|
|
||||||
|
if set -q _flag_sep
|
||||||
|
set insep $_flag_sep
|
||||||
|
else
|
||||||
|
set insep ","
|
||||||
|
end
|
||||||
|
|
||||||
|
# Check if first arg is a file that exists;
|
||||||
|
# if it isn't, read from stdin
|
||||||
|
if test "x$argv[1]" != "x"
|
||||||
|
and test -e $argv[1]
|
||||||
|
set db $argv[1]
|
||||||
|
set query $argv[2..]
|
||||||
|
else
|
||||||
|
set db "|cat -"
|
||||||
|
set query $argv[1..]
|
||||||
|
end
|
||||||
|
|
||||||
|
# If no query is specified, dump all columns
|
||||||
|
if test -z $query
|
||||||
|
set query 'select * from data'
|
||||||
|
end
|
||||||
|
|
||||||
|
sqlite3 :memory: -cmd '.mode csv' -cmd ".separator $insep" -cmd ".import '$db' data" -cmd ".mode $outputMode --wrap 120" "$query"
|
||||||
|
end
|
Loading…
Reference in a new issue