シェル芸で sqlite3 を叩く知見がわりと溜まったのでメモついでにまとめておきます。
$ sqlite3 --version
3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2alt1
まず適当な tsv を作る
bash
$ { seq -f '列%g' 3; seq -f 'ほげ%g' 99; } | paste - - - | tee sample.tsv
列1 列2 列3
ほげ1 ほげ2 ほげ3
ほげ4 ほげ5 ほげ6
ほげ7 ほげ8 ほげ9
ほげ10 ほげ11 ほげ12
ほげ13 ほげ14 ほげ15
ほげ16 ほげ17 ほげ18
ほげ19 ほげ20 ほげ21
ほげ22 ほげ23 ほげ24
ほげ25 ほげ26 ほげ27
ほげ28 ほげ29 ほげ30
ほげ31 ほげ32 ほげ33
ほげ34 ほげ35 ほげ36
ほげ37 ほげ38 ほげ39
ほげ40 ほげ41 ほげ42
ほげ43 ほげ44 ほげ45
ほげ46 ほげ47 ほげ48
ほげ49 ほげ50 ほげ51
ほげ52 ほげ53 ほげ54
ほげ55 ほげ56 ほげ57
ほげ58 ほげ59 ほげ60
ほげ61 ほげ62 ほげ63
ほげ64 ほげ65 ほげ66
ほげ67 ほげ68 ほげ69
ほげ70 ほげ71 ほげ72
ほげ73 ほげ74 ほげ75
ほげ76 ほげ77 ほげ78
ほげ79 ほげ80 ほげ81
ほげ82 ほげ83 ほげ84
ほげ85 ほげ86 ほげ87
ほげ88 ほげ89 ほげ90
ほげ91 ほげ92 ほげ93
ほげ94 ほげ95 ほげ96
ほげ97 ほげ98 ほげ99
投入する
bash
$ export TABLE_NAME=sample
bash
$ cat sample.tsv | sqlite3 -separator $'\t' -header -cmd ".import /dev/stdin ${TABLE_NAME}" a.db
確認
bash
$ sqlite3 a.db ".schema ${TABLE_NAME}"
CREATE TABLE sample(
"列1" TEXT,
"列2" TEXT,
"列3" TEXT
);
bash
$ sqlite3 -header a.db "SELECT * FROM ${TABLE_NAME}"
列1|列2|列3
ほげ1|ほげ2|ほげ3
ほげ4|ほげ5|ほげ6
ほげ7|ほげ8|ほげ9
ほげ10|ほげ11|ほげ12
ほげ13|ほげ14|ほげ15
ほげ16|ほげ17|ほげ18
ほげ19|ほげ20|ほげ21
ほげ22|ほげ23|ほげ24
ほげ25|ほげ26|ほげ27
ほげ28|ほげ29|ほげ30
ほげ31|ほげ32|ほげ33
ほげ34|ほげ35|ほげ36
ほげ37|ほげ38|ほげ39
ほげ40|ほげ41|ほげ42
ほげ43|ほげ44|ほげ45
ほげ46|ほげ47|ほげ48
ほげ49|ほげ50|ほげ51
ほげ52|ほげ53|ほげ54
ほげ55|ほげ56|ほげ57
ほげ58|ほげ59|ほげ60
ほげ61|ほげ62|ほげ63
ほげ64|ほげ65|ほげ66
ほげ67|ほげ68|ほげ69
ほげ70|ほげ71|ほげ72
ほげ73|ほげ74|ほげ75
ほげ76|ほげ77|ほげ78
ほげ79|ほげ80|ほげ81
ほげ82|ほげ83|ほげ84
ほげ85|ほげ86|ほげ87
ほげ88|ほげ89|ほげ90
ほげ91|ほげ92|ほげ93
ほげ94|ほげ95|ほげ96
ほげ97|ほげ98|ほげ99
json object で出力する
a.sql
SELECT
'SELECT json_object('
|| group_concat(a||','||b, ',')
|| ') FROM sample'
FROM (
SELECT
"'"||name||"'" as a,
'"'||name||'"' as b
FROM PRAGMA_TABLE_INFO('sample')
);
$ cat a.sql | sqlite3 a.db | sqlite3 a.db
{"列1":"ほげ1","列2":"ほげ2","列3":"ほげ3"}
{"列1":"ほげ4","列2":"ほげ5","列3":"ほげ6"}
{"列1":"ほげ7","列2":"ほげ8","列3":"ほげ9"}
{"列1":"ほげ10","列2":"ほげ11","列3":"ほげ12"}
{"列1":"ほげ13","列2":"ほげ14","列3":"ほげ15"}
{"列1":"ほげ16","列2":"ほげ17","列3":"ほげ18"}
{"列1":"ほげ19","列2":"ほげ20","列3":"ほげ21"}
{"列1":"ほげ22","列2":"ほげ23","列3":"ほげ24"}
{"列1":"ほげ25","列2":"ほげ26","列3":"ほげ27"}
{"列1":"ほげ28","列2":"ほげ29","列3":"ほげ30"}
{"列1":"ほげ31","列2":"ほげ32","列3":"ほげ33"}
{"列1":"ほげ34","列2":"ほげ35","列3":"ほげ36"}
{"列1":"ほげ37","列2":"ほげ38","列3":"ほげ39"}
{"列1":"ほげ40","列2":"ほげ41","列3":"ほげ42"}
{"列1":"ほげ43","列2":"ほげ44","列3":"ほげ45"}
{"列1":"ほげ46","列2":"ほげ47","列3":"ほげ48"}
{"列1":"ほげ49","列2":"ほげ50","列3":"ほげ51"}
{"列1":"ほげ52","列2":"ほげ53","列3":"ほげ54"}
{"列1":"ほげ55","列2":"ほげ56","列3":"ほげ57"}
{"列1":"ほげ58","列2":"ほげ59","列3":"ほげ60"}
{"列1":"ほげ61","列2":"ほげ62","列3":"ほげ63"}
{"列1":"ほげ64","列2":"ほげ65","列3":"ほげ66"}
{"列1":"ほげ67","列2":"ほげ68","列3":"ほげ69"}
{"列1":"ほげ70","列2":"ほげ71","列3":"ほげ72"}
{"列1":"ほげ73","列2":"ほげ74","列3":"ほげ75"}
{"列1":"ほげ76","列2":"ほげ77","列3":"ほげ78"}
{"列1":"ほげ79","列2":"ほげ80","列3":"ほげ81"}
{"列1":"ほげ82","列2":"ほげ83","列3":"ほげ84"}
{"列1":"ほげ85","列2":"ほげ86","列3":"ほげ87"}
{"列1":"ほげ88","列2":"ほげ89","列3":"ほげ90"}
{"列1":"ほげ91","列2":"ほげ92","列3":"ほげ93"}
{"列1":"ほげ94","列2":"ほげ95","列3":"ほげ96"}
{"列1":"ほげ97","列2":"ほげ98","列3":"ほげ99"}
各所の説明書こうかと思ったけど、力尽きた。
まぁいいか、シェル芸だし。気が向いたらそのうち書くかも。