トップページデータ処理SQL, リレーショナルデータベースの活用CSV ファイルに対して SQL 問い合わせを実行

CSV ファイルに対して SQL 問い合わせを実行

CSV ファイルに対する SQL 問い合わせの実行を行う方法は種々ある. 手軽にできるもの複数紹介する.

使用する CSV ファイルの先頭行には,各列の属性名が書かれているものとする.

目次

  1. 前準備
  2. SQLite 3 を用いる
  3. pandasql を用いる
  4. csvkit を用いる
  5. TicklishHoneyBee/csvdb を用いる
  6. q を用いる

    このページで紹介しているソフトウエア類の利用条件等は,利用者で確認すること.

1. 前準備

前準備として CSV ファイルを準備

ここでは,csvkit に同封されているデータファイルである ks_1033_data.csv 次の URL からダウンロードして使用.

https://github.com/wireservice/csvkit/tree/master/examples/realdata

他の CSV ファイルを使うときの注意点としては,用する CSV ファイルの先頭行には,各列の属性名が書かれていること.

2. SQLite 3 を用いる

SQLite 3の詳細は 別ページにまとめている.

SQLite 3 のインストール

SQL 問い合わせの例

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 

[image]

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 

[image]

3. pandasql を用いる

Pandas データフレームの詳細は 別ページにまとめている.

前準備

Windows の場合

  1. Python のインストール: 別ページで説明している.

    Python の URL: http://www.python.org/

  2. pandas と pandasql のインストール

    コマンドプロンプト管理者として実行し,次のコマンドを実行.

    python -m pip install pandas pandasql
    

Ubuntu の場合

pandas と pandasql のインストール

次のコマンドを実行.

sudo apt -y update
sudo apt -y install python3-pandas
sudo pip3 install pandasql 

pandasql を用いた SQL 問い合わせの例

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)

[image]

4. csvkit を用いる

csvkit の詳細は 別ページで説明している.

Python の pandas, csvkit のインストール

csvkit を用いた SQL 問い合わせの例

コマンド

csvsql --query "select distinct county, count(*) from ks_1033_data group by county;" ks_1033_data.csv

[image]

5. TicklishHoneyBee/csvdb を用いる

TicklishHoneyBee/csvdb を用いる.

前準備(Ubuntu の場合)

端末で,次のコマンドを実行.

cd /var/tmp
rm -rf csvdb
git clone https://github.com/TicklishHoneyBee/csvdb
cd csvdb
autoreconf -i
./configure
make 
sudo make install

TicklishHoneyBee/csvdb を用いた SQL 問い合わせの例

コマンド

csvdb -e "select county, count(*) from ks_1033_data.csv group by county"

[image]

6. q を用いる

前準備(Ubuntu の場合)

端末で,次のコマンドを実行.

sudo apt install python3-q-text-as-data

q を用いた SQL 問い合わせの例

コマンド

q -H -d , "select distinct county, count(*) from ks_1033_data.csv group by county;" 

[image]