PHPで動かすことができるSQLite管理ツール「SQLiteManager」を導入し、これを使ってデータベースを作成する。
SQLiteManagerの入手とインストール
SQLiteManager はオープンソースのSQLite管理ツールで、PHP5で動かすことができる。
まず、ダウンロードサイトから圧縮ファイルをダウンロードする。
圧縮ファイルを解凍すると、PHPのスクリプトが入っているフォルダ "SQLiteManager-xxxx" ができるので、これをPHPが実行できるフォルダへコピーする。ここでは、"/sqlitemanager" という名前のフォルダにコピーしたとする。
SQLiteManager 1.24の日本語エンコードは EUC-JP であるため、これを UTF-8 に変更しておく。
ファイル "/sqlitemanager/lang/japanese.inc.php" の冒頭にある2行を下記のように変更する。
また、いくつかの関数定義で警告が出るため、次のように変更する。
ファイル "/sqlitemanager/lang/sqlite.class.php" の "function getDbVersion" の先頭に "static" に加える。
また、いくつかの関数定義にエラーが出るため、以下のように
ファイル "/sqlitemanager/lang/ParsingQuery.class.php" の "function explodeSelect" の先頭に "static" に加える。
まず、ダウンロードサイトから圧縮ファイルをダウンロードする。
圧縮ファイルを解凍すると、PHPのスクリプトが入っているフォルダ "SQLiteManager-xxxx" ができるので、これをPHPが実行できるフォルダへコピーする。ここでは、"/sqlitemanager" という名前のフォルダにコピーしたとする。
SQLiteManager 1.24の日本語エンコードは EUC-JP であるため、これを UTF-8 に変更しておく。
ファイル "/sqlitemanager/lang/japanese.inc.php" の冒頭にある2行を下記のように変更する。
【変更前】変更したら、このファイルを UTF-8 に変換して、保存する。
$charset = 'euc-jp';
$langSuffix = 'ja-euc';
【変更後】
$charset = 'utf-8';
$langSuffix = 'ja-utf-8';
また、いくつかの関数定義で警告が出るため、次のように変更する。
ファイル "/sqlitemanager/lang/sqlite.class.php" の "function getDbVersion" の先頭に "static" に加える。
また、いくつかの関数定義にエラーが出るため、以下のように
ファイル "/sqlitemanager/lang/ParsingQuery.class.php" の "function explodeSelect" の先頭に "static" に加える。
データベースの作成
Webブラウザから "https://localhost/sqlitemanager" を開くと、SQLiteManager が実行され、上図のような画面になる右側のプルダウンメニューから "日本語" を選ぼう。
次に、「新しいデータベースを追加」のところで、Versionは "3" を選び、名前に "pahoodb"、パスに "pahoodb.sqlite3" と入力し、「保存」ボタンをクリックする。これでデータベース "pahoodb" が作成される。
SQLiteは1つのデータベースが1つのファイルから成り立つ。実際に "/sqlitemanager" フォルダの下にバイナリ・ファイル "pahoodb.sqlite3" ができていることを確認してみよう。
Linuxの場合、このファイルを読み書きできる必要があるので、パーミッションが 666 になっていることも確認しておこう。
次に、「新しいデータベースを追加」のところで、Versionは "3" を選び、名前に "pahoodb"、パスに "pahoodb.sqlite3" と入力し、「保存」ボタンをクリックする。これでデータベース "pahoodb" が作成される。
SQLiteは1つのデータベースが1つのファイルから成り立つ。実際に "/sqlitemanager" フォルダの下にバイナリ・ファイル "pahoodb.sqlite3" ができていることを確認してみよう。
Linuxの場合、このファイルを読み書きできる必要があるので、パーミッションが 666 になっていることも確認しておこう。
テーブルの作成
ここでは、歴史上の人物のデータベースをつくってみることにする。格納するデータは、人物の名前、生年、没年、実績の4種類とする。
まず、データベースの実体である「テーブル」を作成する。
一般にRDBMSでは、1つのデータベースの中に複数のテーブルを格納することができる。データベースが Excelのブックに、テーブルがExcelのシートに、カラムがExcelの列、レコードがExcelの行に対応していると考えてもらえば分かりやすいだろう。実際、SQLiteの場合、データベース(ブック)毎にファイルが1つ作成される。
まず、データベースの実体である「テーブル」を作成する。
一般にRDBMSでは、1つのデータベースの中に複数のテーブルを格納することができる。データベースが Excelのブックに、テーブルがExcelのシートに、カラムがExcelの列、レコードがExcelの行に対応していると考えてもらえば分かりやすいだろう。実際、SQLiteの場合、データベース(ブック)毎にファイルが1つ作成される。
SQLiteManager でテーブルをつくるには、上図のように、テーブルの名前とカラムの個数を入力する。カラムは、名前、生年、没年、実績の4種類なので、"4" を入力する。テーブルの名前は "chronologic"(年代の、年代記の)とする。
カラムの設定
次にカラムの「型」を指定する画面になる。
一般にRDBMSでは、格納するデータの型を指定してやる必要がある。
SQLiteでは以下のような型を指定することができる。
一般にRDBMSでは、格納するデータの型を指定してやる必要がある。
SQLiteでは以下のような型を指定することができる。
型 | 説明 |
---|---|
CHAR | 文字列(固定長) |
VARCHAR | 文字列(可変長) |
INTEGER | 整数 |
REAL | 小数 |
TEXT | テキスト |
BLOB | バイナリデータ |
ここでは、以下のように対応づけた。
内容 | 名前 | 型 |
---|---|---|
名前 | name | VARCHAR 40バイト以下 |
生年 | birth | 整数 |
没年 | death | 整数 |
実績 | comment | テキスト |
また、そのカラムに必ずデータが入っていなければならないものを「not null」で、検索キーを「プライマリ」で指定してやる必要がある。ここでは、名前(name)を not null でプライマリとした。
以上を設定し「保存」ボタンをクリックすると、上のような画面になる。
データ挿入
これでデータベースの“入れ物”は用意された。次に、データを入力(挿入)してみよう。
SQLiteManagerのメニュー(上から2行目)の「挿入」をクリックすると、データ挿入画面になる。ここでは、徳川家康のプロフィールを入力してみる。
SQLiteManagerのメニュー(上から2行目)の「挿入」をクリックすると、データ挿入画面になる。ここでは、徳川家康のプロフィールを入力してみる。
項目 | 内容 |
---|---|
名前 | 徳川家康 |
生年 | 1548 |
没年 | 1616 |
実績 | 江戸幕府初代将軍(1603~1605)。三河岡崎城主・松平広忠の長男。今川義元の人質から解放され、織田信長、豊臣秀吉に協力。秀吉の死後、関ヶ原の戦いで勝利し、1603年、征夷大将軍となる。 |
データ・インポート
データを一人一人入力していくのは大変である。
そこで、あらかじめ用意したCSVファイルを使い、一気に挿入する方法を紹介する。CSVファイルはMicrosoft Excelなどを使ってつくっておけばよい。ただし、UTF-8 に変換してから保存すること。
そこで、あらかじめ用意したCSVファイルを使い、一気に挿入する方法を紹介する。CSVファイルはMicrosoft Excelなどを使ってつくっておけばよい。ただし、UTF-8 に変換してから保存すること。
まず、リンク先の圧縮ファイルをダウンロードして、解凍してほしい。先ほどの徳川家康を含め、戦国時代の人物13人のプロフィールが登録されたCSVファイルが入っている。
先ほどの入力画面で「ファイルからデータを挿入」をクリックすると、上手のような画面になる。ここで、先ほど解凍した "chrono1.csv" を指定し、区切り文字をカンマ "," に変更し、「実行」ボタンをクリックする。
先ほどの入力画面で「ファイルからデータを挿入」をクリックすると、上手のような画面になる。ここで、先ほど解凍した "chrono1.csv" を指定し、区切り文字をカンマ "," に変更し、「実行」ボタンをクリックする。
すると上図のように、一気に挿入されたことが分かる。
これから、このデータベース "pahoodb.sqlite3" を使って話を進めていくので、消去しないようにしてほしい。
これから、このデータベース "pahoodb.sqlite3" を使って話を進めていくので、消去しないようにしてほしい。
参考サイト
- SQLiteManager:公式
- 年号:ぱふぅ家のホームページ
- SQLiteManagerでUTF-8でデータを保存したい:3流プログラマのメモ書き
- SQLiteをGUIで管理できるSQLiteManager
- SQLiteManager:技術系のブログ
(この項おわり)