MS Office Accessのサイズが2GBを超えてしまったときの対処法 ~Access以外のDB管理ソフト検証~
Pocket

以前、MS Office Accessが2GBを超えてしまった場合における対処方法について記述していたが、その続き。

前回は、2GB以上の「.mdb(.accdb)」ファイルを作成する方法は存在しない事から、いかに容量を2GB以内におさめるかに注力していた。

このあたりについては、英語圏の人たちも苦労している事が伺える。以下にその一例を。

Microsoft Access Specifications and Limitations

http://webcheatsheet.com/sql/access_specification.php

Access MDB: do access MDB files have an upper size limit?

http://stackoverflow.com/questions/2785851/access-mdb-do-access-mdb-files-have-an-upper-size-limit

今回は、もうそもそもAccessでは2GB以上使えないと諦めてMS Office Accessに変わるデータベースソフトウェアを検証してみることにした。

Sponsored Links

対象は、以下の観点で選定した。

  • 2GB以上のファイルとして扱えるか否か
  • 別途データベースサーバを立てる必要が無いか(単一ファイルで作業が可能か)
  • SQLに(そこまで)明るくない人間でも操作出来るか

まぁ、3点目はそこまで重視していない。わかんなければ勉強してもらえれば…SQLなんてそんな難しくないし…

Libre Office

OfficeソフトウェアでMS Office以外とくればまず名前が上がる「Libre Office」のデータベースソフトウェア「Base」で対応が出来ないかを検証してみた。

まずは下調べから。Libre Office Baseのファイル最大容量はいくらなのかを確認。
以下のページを参照してみた。

Limit on Base records? | LibreOfficeForum.org

http://en.libreofficeforum.org/node/4288

上記を確認すると、Libre Office Baseのデータベースは「HSQLDB」というRDBMSを使用しており、貼られている英語版のWikipediaのページを見るとその最大容量は64TBとのこと。

つまり、2GB以上のファイルは作成出来るということになる。

でLibre Office 4.1をちょっと触ってみた結果…

  1. 重くて使い物にならない
  2. ユーザビリティが低すぎる(CSVからのインポート等が複雑)
  3. Javaが必須
  4. Baseが落ちるとその他のLibre Office系ソフトウェアも一緒に落ちる

具体的に言うと、1は言わずもがな。重くて重くて、とても使えたものではない。5000件程度のデータをインポートするのに5~10分はかかり、その間Baseはおろか、Clac等も触れない。Core i5を使っているにも関わらず、すさまじい重さ…

結局、あまりにもレスポンスが重いので3MB程度で検証は断念。

2もひどく、Accessでは簡単に行えるCSV等からのインポートには、一度CSVファイルをClacで読み込んだ上で、テーブルに貼り付け(重い)するか、Baseで新規データベースとして扱って内容を取り込むしか無い(これも重い)。

更に、外部データからインポートして作成したテーブルの一部は、編集が出来ないようになっているようだ。(CSVファイルからインポートしたテーブル。3度ほど確認したが事象再現できた。)

3、4はまぁいいとしても(良くないけど)、上記2点によって個人的には使い物にはならないと思う。
この重さは万国共通なんだろうか?それとも、単に自分のPCの環境や設定が悪かったからなんだろうか…

一応、JA福岡市の方がマニュアルを公開しているので紹介。

「LibreOffice_Base用マニュアル」を公開いたしました。

http://www.ja-fukuoka.or.jp/libre/2332/

なお、派生元であるOpenOfficeについてはLibre Officeと大して変わらないと思われるので、検証しないものとする。

SQLite(+PupSQLite)

以前にもAccessの2GBを超えた際の対処案として出していたが、やはりSQLiteは扱ってみようと思う。

しかし、AccessをSQLiteのクライアントとして使う場合はODBCの設定等が必要となり、更に新規テーブルをAccess経由で作成出来ない事から、既存のテーブルを使いまわす業務が中心になってしまう。

そこで、GUIでSQLiteを扱えるフリーソフトのうち、CSV等からSQLiteへインポートが可能という「PupSQLite」を検証して見ることにした。

なお、事前に注意したいのが以下に該当する人はこの方法ではなく、SQLite(+MS Office Access+その他SQLiteクライアント)の手段を取る事をおすすめする。

  • SQLなんて全くわからないし、勉強する時間も無い
  • 既存のAccessの追加、更新、削除クエリをそのまま使いまわしたい

理由は、本ソフトウェアに限らずこういったデータベースクライアントはAccessでいう更新クエリといったものはなく、更新を行うためのSQL文は自分で作成し、別途.sqlファイルとして保存する必要があるからである。

そのため、SQLをある程度理解していて、既存のクエリを書き直すことが出来る人間であればこのツール一個で対応できるが、そうでないのであればこれに加え、クライアントにAccessを使用する方式をとったほうが良い。

では、まず以下からクライアントソフトウェアをダウンロード。

Pup’s Atelier-Software

http://www.eonet.ne.jp/~pup/software.html

※なお、上記ページにも記述されているがこのソフトウェアは.Net Fream Workが必要なので事前にインストールする必要がある。

このソフトはインストールせずに使用するタイプなので、上記ページからzipファイルをダウンロードして解凍すると、実行ファイル「PupSQLite.exe」があるのでダブルクリック。

実行すると、以下のような画面が表示されるので、上部メニューより「データベースの新規作成」をクリック。

新規にデータベースを作成する場合、まずテーブルを作るように言われるので、そのテーブル名を入力。

テーブルの新規作成画面。

CSVからファイルをインポートしてみる。
上部メニューから「ファイルからインポート」を選択

インポートするファイル、インポート先のデータベースを選択する。
ここではkazina.comさんの「なんちゃって個人情報」から5,000件ほどのデータを作成してインポートしてみた。

テーブルの新規作成画面。今回はこのまま「OK」をクリック。

インポートが開始される。
5,000件程度ならば1分もかからずに完了する。

自動生成後、テーブルに登録されたニセ個人情報。

次にビュー。Accessで言うと(ある意味)参照クエリに当たるもの、と考えてもらえるとわかりやすい。

抽出条件にビューの結合条件を記述する。
このツールではあくまでも通常のInner Joinしか出来ないため、細かい指定をする場合は「SQL文確認」から手打ちで修正する。

なお、ビューの作成以降はSQLを修正出来ないので、間違えない用に注意すること。

簡単な使い方は以上。
OracleやPostgresql、MySQLを使った事のある人ならばすぐに使えるようになるのではないだろうか。

(とは言え、今までAccessしか使ったことが無いような人には難しいかもしれない…)

なおSQLiteと本ソフトウェアに加え、今までのAccessを使いたい場合はクライアントPC(Accessを実行するパソコン)でODBCの設定を行い、SQLiteのテーブルをリンクテーブルとして使えばいいだろう。

SQLite側でテーブルが必要になる場合は、上記ツールを使用して別途作成すればいい。

ODBCでSQLiteを参照する方法は、以下のページを参考にすると良い。

AccessからSQLiteのデータベースを使用する方法

http://www.crystal-creation.com/software/tool/office/access/external/sqlite.htm

しかし、そろそろAccessの容量制限も解除出来ないものだろうか?
フリーウェアで2GBなんて存在していないんだし、技術的には可能だと思うんだけど…

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 2 comments

  1. Priscilla Reply

    If you are going for finest contents like me, just visit this website all the time since it presents quality contents, thanks

  2. Bettie Reply

    I really like what you guys tend to be up too. This kind of clever work and exposure! Keep up the great works guys I’ve included you guys to my own blogroll.

Leave a Comment

メールアドレスが公開されることはありません。