CSVファイルのSQLite 3へのインポートとSQL問い合わせ

概要

CSV形式のデータファイルをSQLite 3データベースへインポートする方法を解説する。1つのCSVファイルを1つのテーブルとしてインポートする手順を示す。

ソフトウェアの利用に際しては、利用規約および動作環境を確認の上で使用する必要がある。

目次

【サイト内の関連ページ】

SQLite 3 活用ガイド

1. 前準備

SQLite 3について

SQLite 3の詳細については、別ページ »を参照すること。

CSVファイルの準備

本解説では、csvkit(CSVを扱うコマンド群)に同封されているデータファイルks_1033_data.csvを使用する。

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

他のCSVファイルを使用する場合は、ファイルの先頭行に各列の属性名が記載されていることを事前に確認する必要がある。

2. SQLite 3へのインポート

  1. sqlite3の起動
    sqlite3 <データベース名>
    sqlite3コマンドによるデータベース起動画面
  2. テーブルの作成とCSVファイルのインポート

    CSVの先頭行は列名なので、先にテーブルks1033を作成し、.mode csv.import --skip 1 で先頭行を読み飛ばしてインポートする。SQLite 3の.importは、対象テーブルが存在する場合、先頭行もデータとして取り込むため、この指定が必要である。

    create table ks1033 (
      state text, county text, fips_state integer, fips_county integer,
      item_name text, quantity integer, ui text,
      acquisition_cost real, total_cost real, ship_date text );
    .mode csv
    .import --skip 1 ks_1033_data.csv ks1033
    CSVファイルをSQLite 3にインポートする操作画面

    ※ CSVの列構成が異なる場合は、CREATE TABLE の列定義を実際のCSVに合わせること。csvkitcsvsql --tables ks1033 ks_1033_data.csvを使うと、CSVからCREATE TABLE文を生成できる。

  3. データの確認

    県別の集計例である。

    select county, count(*) from ks1033 group by county;
    県別にデータを集計したSQL問い合わせ結果

    特定県のデータ抽出例である。

    select * from ks1033 where county = 'BROWN';
    特定の県のデータを抽出したSQL問い合わせ結果
  4. 終了は「.exit」コマンドを使用する。
    sqlite3の終了操作画面