Excelやcsv等の表形式データの加工はSQLを使うと便利

仕事柄、csv(カンマで区切られたデータ)やエクセルの、数万件のデータを扱うことが多いのですが、件数が多くなってくると。エクセルの動きも遅くなってきます。

特に、それらのデータから値を取捨選択したり、すべての項目に対して一律加工を行う時には、SQLを使うと便利です。

SQLはデータベースの問い合わせに利用される言語で、データの抽出や加工が(慣れた人にとっては)しやすいと思います。

手軽にデータ加工に使えるDBを知っておくと、超便利!

データベースというと、MySQLやOracleなどを思い浮かべる人が多いと思いますが、わざわざサーバをインストールしなくても、ファイル形式のDBソフトがあります。

「SQLite」といわれるDBで、ファイル形式ですので、お手軽に扱えます。SQLiteのインストールは簡単で、MySQLなどのように常駐したりもしませんし、何より、ファイルをメールで送ってしまえば、SQLiteのあるどの環境でもSQL加工が行えるという利点があります。

さらに、SQLiteをGUIから使用することのできるソフトもいくつかあり、その中の「PupSQLite」というソフトが非常に使いやすいので、愛用しています。

私の思う、PupSQLiteの利点は、

エクセルやcsvファイルをインポートできるが、それを自動でテーブルにしてくれるので、DDLなどのめんどくさいテーブル定義を行う必要がない

というところです。

特にエクセル・ブックにある複数シートのデータを別々のテーブルとして読み込んでくれるのは、秀逸ですね!

PupSQLの使い方

始めに、ここからソフトをダウンロードしてきて、インストールします。SQLiteのライブラリも同梱されていますので、別途SQLiteをインストールする必要はありません。

インストール後、ソフトを起動します。

「ファイル」⇒「新規作成」を選択すると、下記のような画面になり、データベースのファイルを保存する画面になります。このファイルひとつが、一つのDBとなり、いくつかのテーブルをまとめて保持しておけると考えてください。

上記でファイル名を入力して保存し、最初のDBファイルを作成しました。

それから、画面上部の「ファイルからインポート」ボタンを押下し、インポート対象のファイルを選びます。

今回は、シートの2つあるエクセル・ブックを指定しました。すると、エクセルの解析が行われ、取り込むシートを選択するダイアログが開きます。ここで、取り込みのオプションとして、1行目を絡むとして無視する設定も可能です。

(1行目は、取り込み先のテーブルのカラム名として使われます。)

上記ダイアログで「実行」ボタンを押すと、データの解析が行われて、下記のようにテーブル構造の提案が行われます。

ここでは、元のデータが適切に認識されているかを確認しましょう。データの型やカラム数、カラム名を確認します。

「OK」を押すと、データのインポートが行われます。

ここまで来れば、あとは、SQLでデータに対して加工を行えます。加工後のデータは、また、エクセル等でエクスポートすれば、加工後のデータをエクセルに戻すことができます。