CSV ファイルに対する SQL 問い合わせの実行を行う方法は種々ある. 手軽にできるもの複数紹介する.
使用する CSV ファイルの先頭行には,各列の属性名が書かれているものとする.
【目次】
このページで紹介しているソフトウェア類の利用条件等は,利用者で確認すること.
前準備として CSV ファイルを準備
ここでは,csvkit に同封されているデータファイルである ks_1033_data.csv 次の URL からダウンロードして使用.
https://github.com/wireservice/csvkit/tree/master/examples/realdata
他の CSV ファイルを使うときの注意点としては,用する CSV ファイルの先頭行には,各列の属性名が書かれていること.
Windows の場合は次のようなコマンドを実行.
echo .separator , > hoge.sql echo .import ks_1033_data.csv ks1033 >> hoge.sql echo select distinct county, count(*) from ks1033 group by county; >> hoge.sql type hoge.sql | sqlite3
Ubuntu の場合は次のようなコマンドを実行.「type」 の代わりに cat.
echo ".separator ," > hoge.sql echo ".import ks_1033_data.csv ks1033" >> hoge.sql echo "select distinct county, count(*) from ks1033 group by county;" >> hoge.sql cat hoge.sql | sqlite3
Pandas データフレームの詳細は 別ページ »にまとめ
Python の公式ページ: https://www.python.org/
Windows では,コマンドプロン プトを管理者として実行し, 次のコマンドを実行する.
python -m pip install pandas pandasql
pandas と pandasql のインストール
次のコマンドを実行する.
sudo apt -y update sudo apt -y install python3-pandas sudo pip3 install pandasql
Python プログラム
import pandas as pd from pandasql import sqldf ks1033 = pd.read_csv('ks_1033_data.csv') pysqldf = lambda q: sqldf(q, globals()) a = pysqldf('select distinct county, count(*) from ks1033 group by county;') print(a)
次のように操作する.
python -m pip install csvkit
端末で,次のコマンドを実行する.
sudo apt -y install csvkit python3-csvkit
コマンド
csvsql --query "select distinct county, count(*) from ks_1033_data group by county;" ks_1033_data.csv
次のコマンドを実行.
cd /var/tmp rm -rf csvdb git clone https://github.com/TicklishHoneyBee/csvdb cd csvdb autoreconf -i ./configure make sudo make install
コマンド
csvdb -e "select county, count(*) from ks_1033_data.csv group by county"
次のコマンドを実行.
sudo apt install python3-q-text-as-data
コマンド
q -H -d , "select distinct county, count(*) from ks_1033_data.csv group by county;"