複数の SQLite 3 データベースの一括統合

概要

このページでは,このページ集の各演習で作成した複数の SQLite 3 データベースを,1 つのデータベース alldb に統合する体験を行う。 仕組みは単純で,各データベースを .dump で SQL 文(テーブル定義とデータ挿入の文)としてダンプし,それらを新しいデータベースに .read で順に読み込む,というものである。

統合の対象とするデータベース(それぞれの作り方は各ページで説明): bstopdb(バス停),estatdb(統計),ipadicdb(形態素解析辞書),quotedb(外国為替),zipdb(郵便番号),stldb(STL 三角形ポリゴン),ekidb(駅),osmdb(Open Street Map),rdataset(R のデータセット),lbmadb(金価格)

作成するSQLite 3 データベース: alldb

目次

サイト内の関連情報

第1章 前提と準備

第2章 一括統合の手順

次の bash プログラムを実行する。前半で各データベースを /tmp/<データベース名>.sql にダンプし,後半でそれらを新しいデータベース /tmp/alldb に順に読み込む。

bash プログラム

#!/bin/bash

# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/bstopdb.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/bstopdb

# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/estatdb.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/estatdb

# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/ipadicdb.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/ipadicdb

# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/quotedb.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/quotedb

# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/zipdb.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/zipdb

# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/stldb.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/stldb

# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/lbmadb.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/lbmadb

# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/ekidb.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/ekidb

# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/osmdb.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/osmdb

# dump
cat >/tmp/a.$$.sql <<-SQL
.output /tmp/rdataset.sql
.dump
.exit
SQL
#
cat /tmp/a.$$.sql | sqlite3 /tmp/rdataset

# load
cat >/tmp/a.$$.sql <<-SQL
.read /tmp/bstopdb.sql
.read /tmp/estatdb.sql
.read /tmp/ipadicdb.sql
.read /tmp/quotedb.sql
.read /tmp/zipdb.sql
.read /tmp/stldb.sql
.read /tmp/lbmadb.sql
.read /tmp/ekidb.sql
.read /tmp/osmdb.sql
.read /tmp/rdataset.sql
vacuum;
.exit
SQL
#
rm -f /tmp/alldb
cat /tmp/a.$$.sql | sqlite3 /tmp/alldb

◆ 確認手順

統合後のデータベースに含まれるテーブルの一覧と,件数の例を表示する。

echo '.tables' | sqlite3 /tmp/alldb
echo 'select count(*) from stl;' | sqlite3 /tmp/alldb
echo 'select count(*) from lbma;' | sqlite3 /tmp/alldb

考察ポイント