診断士の経営視点とSEのシステム技術の両面からIT・システム開発・Web技術+アウトドア情報を提供しています

トップブログでつくるビジネスサイト無料ブログでここまでできるCMSでつくるビジネスサイトウェブ講座&SEOシステム開発個人情報保護Googleでお仕事信州撮っておき情報








スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[--------] スポンサー広告 | |

Excelとデータベースの連動 

ExcelからDBのデータを取得する

データベースのデータをExcelで加工できれば、帳票や分析作業をExcelに任せることができて便利だ。

実現方法はいろいろある。かつてはHTML(今ならxml)形式に出力したテーブルをExcelに取り込んでいた。べたな方法ならCSVに吐き出してExcelに取り込む方法もある。

Excelデータベースクエリの設定

ここではExcelの外部データの取り込みの中からデータベースクエリで取り込む方法を採用した。

ExcelにMicrosoftクエリがインストールされていること。標準インストールではクエリは設定されていない。データ>外部データの取り込みを選択する。インストール画面が出たら、インストールCDをセットしてしばらく待つ。

Excelデータベースクエリを使う

設定が終われば、データベースクエリが使える。データ>外部データ>データベースクエリを選択する。ODBC>テーブル>フィールドと選択する。範囲抽出条件や並び順も指定できる。

Excelで抽出条件を可変的に指定する

範囲抽出条件がミソ。使うたびに条件がExcel側で変更できなければ実用上意味がないからだ。

データ>クエリの編集を選択して、クエリ画面を開き、おなじみのACCESS風クエリ画面で条件をパラメータにする。between [開始番号] and [終了番号] など。

この状態で、ファイル>実行結果をExcelに返す を実行してもExcelに反映されているが、毎度こんな操作をするわけにはいかない。クエリにパラメータを設定したら、Excelでデータ>パラメータを選択し、設定したパラメータの値をどこから取得するかを指定する。セルの値を選択し、Excelのどこかのセルを指定して、セルの値が変更されたらデータを更新にチェック。

これでExcelを開いたときは前回保存されたパラメータで抽出し、指定のセルの値を変更すると、即座に指定値で再クエリが実行され、データを取得しなおす。サーバに負荷をかけないためには、Excelを開いたときや、セルの値を変えたときではなく、明示的に取得したほうが良いだろう。

Excelとデータベースを連動して

これでデータの管理は本格DBで、データの加工、印刷、分析はExcelで という使い分けができる。Excelに印刷レイアウトを設定しておけば、システムで帳票を作ることもない。非定型業務もExcelに任せれば、使う側も、作る側も楽になる。

以上、Excel2000,2003で確認済み。2007は当分使わないので未確認。

スポンサーサイト

[2007-01-30] システム開発 | TB(1) | CM(0)

MTのDB変更 

MTのデータベースを再度変更する

ロリポップの場合、MySQLの速度に問題があり、時には例の500エラーが出るようだ。幸い自分のMTでは500エラーは出ていないが、クライアントのMTでは再編成で必ず500エラーが出ているとのこと。どうも、原因はMySQLではなく、ロリポップ側のサーバの問題のようだ。

そこで、データベースをSQLiteに変更することになったが、クライアントのMTで実行する前に、自分のMTで実験してみた。

DBの速度対決はSQLiteの圧勝!

DBをMySQLからSQLite移行し、再編成の速度を計測した。結果はSQLiteの圧勝に終わった。

    MySQL

  • 1回目 41.40秒
  • 2回目 36.52秒
  • 3回目 40.42秒

    SQLite

  • 1回目 19.18秒
  • 2回目 18.25秒
  • 3回目 20.38秒

エントリ数181、カテゴリ数18を再編成し、開始から終了までの所要時間をストップウォッチで計測したもの。手計測でサーバやネットワークの状況は加味していないが、それでもこの結果は圧倒的だった。

すかさず自分のDBもMySQLからSQLiteに切り替えたことは言うまでもない。

これでMTのDBは、BerkekeyDBからMySQL、MySQLからSQLiteへと移行したことになる。

MySQLからSQLiteへの移行手順

  1. mt-db-convert.cgiを入手しサーバにアップ
  2. mt-db-convert.cgiのパーミッションを755に
  3. MySQLのパスワードを確認(IDとサーバは自動的に設定される)
  4. SQLiteのディレクトリと空ファイル sqlite.db を作成
  5. mt-db-convert.cgiをブラウザから開く
  6. MySQLのパスワードを入力
  7. SQLiteパスを入力して convert 実行
  8. 変換後、出力された内容でmt-config.cgiを書き換え
  9. パスワードを指定し直してログイン

以上で MySQL から SQLite への移行は完了した。

今回は SQLiteのDBファイル(DBディレクトリ?)を作っておかなかったのでエラーとなった。作成後、再実行の画面でまたエラーになって焦ったが、良く画面を見るとMySQLのパスワードの入力値が消されているためだった。パスワードを再入力して実行。あとは問題なく移行できた。








トップブログでつくるビジネスサイト無料ブログでここまでできるCMSでつくるビジネスサイトウェブ講座&SEOシステム開発個人情報保護Googleでお仕事信州撮っておき情報
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。