LoginSignup
5
3

csv に SQL

Last updated at Posted at 2017-08-31

csv ファイルの中身を SQL で検索したいときがたまにある。

q というコマンドが開発されている。ほとんどは grep で何とかなってしまっていたので、まともに取り組んだことはなかったのだけど、気が向いて使ってみた。

そして中身を覗いてみたら sqlite を使っている模様。少し調べてみると、今なら sqlite csv virtual table で役目を果たしそう。ちなみに q が記事で取り上げられたのは 2015-08 で、csv extension がリポジトリに入ったのは 2016-08 ですね。

q みたいに気軽に使うには、bash の関数で環境に置いておけばいいかな。

.bash_profile
# example:
#  q "select c1 from rootname"
# where columns are "c"+number and tablename from filename "rootname.csv"
function q(){
	FS=""
	for f in *.{csv,CSV}; do
		if [[ "x${f:0:1}" != 'x*' ]]; then
			FS="$FS create virtual table temp.\`${f::-4}\` using csv(filename='$f');"
		fi
	done
	sqlite3 -init <(echo ".load csv") "" "$FS $*";
}

opendata でとりあえずササっと解析したいときとか、楽だわー

そのほかの方法はこちらが詳しいです。

追記

追記2

最近(2024-01-05)は csvkit の csvsql が手ごろだと思う。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3