GIS奮闘記

現役GISエンジニアの技術紹介ブログ。主にPythonを使用。

スポンサーリンク

Python で CSV ファイルを SQLite にインポートする方法

さて、本日は CSV ファイルを SQLite にインポートしてみようと思います。前回のエントリーで「交通事故統計情報のオープンデータ」のコード表を CSV に変換してみました。本エントリーではその CSV を SQLite にインポートしてみようと思います。

PDF を CSV に変換する方法について興味のある方はぜひ前回のエントリーを読んでみてください。

www.gis-py.com

また、以下のエントリーで SQLite に関して書いていますので、こちらも興味がありましたらぜひ読んでみてください。

www.gis-py.com

対象データ

前回のエントリーで出力した CSV です。 これらをファイルごとにインポートしていこうと思います。

f:id:sanvarie:20201229171900p:plain

f:id:sanvarie:20201229172351p:plain

やり方

  1. Pandas で データフレームとして CSV を読み込む
  2. 「1」のデータフレームをSQLiteにインポート

実行環境

Windows10 64bit
Python3.6.6

サンプルコード

CSV ファイルを SQLite にインポートするサンプルです。すごく短いコードで済みましたね。

# -*- coding: utf-8 -*-
import sqlite3
from os.path import join, split
from glob import glob
import pandas as pd

csv_path = r"D:\blog\data\pdf2csv\csv"
db_path = r"D:\blog\data\sqlite\test.db"

def insert_csv():
    # CSV ファイルのディレクトリ取得
    csv_files = glob(join(csv_path, "*.csv"))

    for csv in csv_files:

        table_name = split(csv)[1] # テーブル名作成

        table_name = table_name[0:-4] # テーブル名から拡張子を削除

        df = pd.read_csv(csv, dtype=object) # CSV 読込

        with sqlite3.connect(db_path) as conn:
            df.to_sql(table_name, con=conn) # SQLiteにCSVをインポート

if __name__ == '__main__':
    insert_csv()

結果を確認するとこのように CSV がSQLiteにインポートされたことがわかります。

f:id:sanvarie:20201229185546p:plain

f:id:sanvarie:20201229183843p:plain

さいごに

CSV ファイルの SQLite へのインポートは思ったよりも簡単にできることがわかりました(Pandas は本当に便利なライブラリですね)。これでようやく「交通事故統計情報のオープンデータ」の可視化にとりかかれそうです。ちょっとまだすべてのデータを確認したわけではないので何とも言えないのですが、結構大変そうですね。ただ、今年の年末年始はコロナでたっぷり時間がありそうですし楽しみながら取り掛かってみようと思います。次回のエントリーもぜひ読んでみてください。