毎日にもっと楽~を! BLOG Tokyo

Search

Access Ranking

  1. 添付ファイルを一括保存する
  2. ジャークチキンの作り方
  3. アンケートフォームの作成
  4. このファイルを開けません..
  5. 複数のブックを一つにまとめる 1

2008年11月13日

SQLiteの最適化

SQLiteは使いやすいデータベースだが、これを簡単にメンテナンスできるフリーソフトがありました。データベースはSQLserverもそうだが、データベース上で不要データを削除しても、削除フラグが立つだけで、実際は削除されていない。そうすると実データは少ないのに、メンテナンスしなければどんどんとデータベースは肥大化してしまし、パフォーマンスを著しく低下させてしまうのだ。

データベースの最適化は裏方の仕事で目立たないがとても重要なしごとなのです。
ということで、地味な仕事な上に、コマンドラインを覚えるのも面倒な方のために、GUIですてきなフリーソフトがTkSQLiteなのです。

TkSQLite



6015kが5468kになりました。

あんまり減ってないけど、不要データを大量に削除した後とかには効果大でしょう。

わかりやすいマニュアル

2008年3月29日

SQL server 2005にアップサイジング

ACCESSはそもそもスタンドアロンで利用されることを目的とされており、ネットワーク上で共有して使うには多くの問題点を抱えているようだ。そこでSQL Serverを導入してはどうかというのがマイクロソフトの戦略なわけなんだが、使ってみるとバージョンごとのサポートがないため、コピー&ペーストで簡単にできるわけではないらしい。

ACCESSのアップサイジングという機能を使うと簡単にSQL Serverにデータを移行でき、その時に作られる.adp(ACCESSプロジェクト)を使ってC/S版のデータベースを開発するというような仕組みらしいのだが、ストアドプロシージャとかがいきなり出て来て、これを使わないと開発も進められないので、なかなか敷居が高い。

もっと詳しくMS ACCESS

SQL server 2005にアップサイジングの続きを読む

2008年3月28日

SQL Server 2005

職場でACCESSを使う機会が多いが、ネットワークを介して複数人で利用する場合、頻繁にデータが壊れてしまう。経験的に5人の同時アクセスでレコードの更新をかけるだけでかなり危険だ。そのうち誰かがクエリのデザインを変更したりすると物凄い確率で破損する。MySQLへのテーブルの移動も考えたが、文字コードやデータベースエンジンの違いにより結構複雑であるし、持続可能ではない。やはり、Microsoft同士の相性が良さそうなので、SQL Server 2005を試してみた。Express版は無料というのがポイントだ。

SQL Server 2005の続きを読む

2007年6月 1日

Knoppixでapacheを動かす

Knoppixでは既定でApacheは動いていない。rootshellで下記のコマンドを使ってサービスを開始しよう。

#/etc/init.d/apache start [Enter]

#ps -aux | grep apache [Enter] //psコマンドでapacheのプロセスを確認します。

ドキュメントルート
/var/www
です。

もっと詳しく
http://210.162.59.6/apecknoppix/base34r2/knoppix_chap7.htm

2007年5月11日

Linuxを体験しよう 2

LinuxのKnoppixはCDから起動でき、手軽にその環境を整えることができることはすでに述べた。ただ、動作が遅い。忍耐が必要である。

Linuxの環境を整える必要性は、単にその興味からではなく、例えばWebサーバーがUNIX上で動くApacheなどで、Perlプログラミングにおいて、UNIXのOSコマンドを利用したい場合など、動作環境をローカルでテストしたい場合は重宝する。

そこで、仮想マシンが登場する。今回はVMwareというソフトをつかってWindows動作中にも他のOSを起動できるという優れたソフトを使ってその手順を紹介したい。

Linuxを体験しよう 2の続きを読む

2007年5月10日

Linuxを体験しよう。

熟睡できない毎日が続く。体が痺れるし、妙に朝の目覚めが早い。これは時差ぼけの次元を超えている気がするが。。。

さて、
Linuxを体験しようと言っても、今日の日本ではあんまりその必要性も感じない。なぜならWindowsの正規版をみんな持っているからである。これが正規版をもっていなくて、買う余裕もないけど、なぜかハードウェアだけなら買う余裕があるというならば話しは別だ。そんな状況は現状では考えられない。(昔職場のパソコンに無断でインストールして、自分の後任に迷惑をかけた思い出がある。)

でも将来的な可能性と、その好奇心からLinuxを体験したい人は少なくないが、正直正規版のWindowsを持っている人にとっては(自分のパソコンには)インストールしたくないというのが本音ではないだろうか。

そこで手軽なのが、Knoppixだ。CDから起動できて、軽快に動くので、単にbashなどのシェルを使ってみたいだけならいいんじゃないだろうか。

ちなみになぜ、今Linuxを使おうとしているかというと、Air大学の課題がLinux環境を前提としているからなんだど。それがなければ特に必要性を感じていない。

Knoppixをダウンロードしてみる

2007年4月 1日

【PHP×PEAR】DB_DataObjectの文字化け

DB_DataObjectでMySQLに接続して使う場合、どうやって
SET NAMES ujis;
を書けばよいのか迷っていた。そしたら、マニュアルが日本語で公開されていたので、それどおりやるとうまく行った。


$person = new DataObjects_Person;
$person->query("SET NAMES ujis");
$person->query("SELECT * FROM {$person->__table} WHERE id > 12 ORDER BY id");
while ($person->fetch()) {
echo $person->name;
}
?>


2007年3月21日

手軽なSQLite

MySQLをバックアップ&リストアしようと思うとそこそこ面倒くさい。mysqldumpを使って、それから障害直前のリカバリまでしようとしようものなら、不慣れで頭がいたい。いやいや、そこまでしなくてもAccessのように使えるだけでいいんだけど。。。というケースもある。そういう時はこのSQLiteがいいじゃないでしょうか。(使ったことはないけれど)

10万件までならMySQLと遜色ないパフォーマンスを発揮することができるようです。

その特徴は。。

1.1ファイル1データベース
 バックアップ&リストアはコピー&ペースト。
2.ユーザを持たない
 誰でも閲覧可能なデータとかにいいのでは。ファイルへのアクセス権限をOSレベルで制限する。
3.データ型を持たない
 まぁ、INTとかVARCHARとか気にしなくてもいいようです。ただし、INT型を主キーにする場合は、明示的に宣言する必要があるようです。その場合は、オートナンバーとみなされるようです。

手軽なSQLiteの続きを読む

2007年3月20日

【MySQL×PHP】文字化け

文字化けの問題は終わらない。character-setをサーバ、クライアント,DBであわせるということは以前にもメモしたが、それだけじゃない。面倒くさい。文字化けの深刻さは、SQL文が文字化けするので、ちゃんとした結果が返ってこない。一見なんのエラーだか、さっぱりわからない。

今回は少し進展した。
phpのスクリプトに
SET NAMES cp932;
という文でうまくいくと以前メモしたが、どうもうまく行かない場合もある。
そんなときは、ujisで対応したらどうだろうか。
SET NAMES ujis;

また、my.ini(MySQLの設定ファイル(my.cnf))の[mysqld]の部分に下記を追加すると自動変換機能がオフになる。これで、文字化け問題を回避できる場合もある。
my.ini
[mysqld]
skip-character-set-client-handshake

さらにMyNAパッチを当てたlibmysqlclientおよびlibmysql.dllを入れ替える。
パッチのダウンロード
C:\php5\とかC:\WINDOWS\SYSTEM32\にコピーすればよい。

phpスクリプト側でmy.iniを読み込むようなコーディングも必要らしい。

PHP version 4 の場合
読めない。[client] に書いても無駄。
http://www.mysql.gr.jp/frame/modules/bwiki/?Contrib のパッチを当てる。

PHP version 5の場合
mysqli モジュールに、my.cnf を読む関数が用意されている。

mysqli_options(connection, MYSQLI_READ_DEFAULT_FILE, "/etc/my.cnf");
mysqli_options(connection, MYSQLI_READ_DEFAULT_GROUP, "php");

mysql コマンドでは大丈夫なのに、PHP,perl,accessなどで文字が ? に化けるのは?(文字化け) †

良くある勘違いは、
「mysqlコマンドが動いているから、自分のアプリも正しくコード変換するだろう」
というものです。
これは間違いです。

次の節の概念図をじっくり見てください。

MySQL サーバーとおしゃべりしている libmysqlclient.so (libmysql.dll) に、キャラクターセットが埋め込まれています。

mysql コマンドには default-character-set のオプションがあり、キャラクターセットの指定ができます。
これは libmysqlclient.so (libmysql.dll) の埋込キャラクターセットを上書きします。

しかし、MySQL AB が提供しているコマンド(mysqldump, mysql, mysqlimport等)や MyODBC 以外の、
別の誰かが作ったアプリやコマンドは、
my.cnf を読んだり、default-character-set オプションがあったりするわけではありません。
my.cnf を読んだり、default-character-set オプションが使えたり、SET NAMES 文が実行されたりするのは、
あくまでも、アプリ側の責任、作り手の責任なのです。
上の図で言えば、PHPMyAdmin や PHP 自身の部分に、キャラクターセットの指定をする処理や my.cnf を読む処理を、作り手が意図して書かない限り、実現しないのです。

これは perl だろうが Ruby だろうが、access だろうが、PHP と同じです。
(MyODBC(Connector/ODBC)は設定をすることで、my.cnf の [odbc] グループを読みます。
access で MyODBC を使用しているなら、my.cnf を読むオプションを有効にしておきます。)


コードを書くのが嫌なら(変更することが出来ない状況なら)、libmysqlclient (libmysql,dll) の埋込キャラクターセットを変えるのです。
これは libmysqlclient(libmysql.dll)のコンパイルのし直しを意味します。
なお、5.0.13-rc 以上では、mysqld --skip-character-set-client-handshake とすることで、libmysqlclient はサーバーのキャラクターセットに合せるようになります。
1 つのサーバーで 1 つのキャラクターセットしか使用しない(4.0までのように)のであれば、skip-character-set-client-handshake オプションの指定だけで OK です。
このとき、libmysqlclient の re-compile は不要です。

2007年3月 3日

【MySQL】システムで予約されているエラー(-7776)

システムで予約されているエラー(-7776)です。このエラーに対するメッセージはありません。

ODBCでMySQLにリンクした後に、Accessから更新しようとすると上記のエラーがでる。ODBCの問題なのか、日本語の問題なのか、はたまた、MySQLの問題なのか。MySQLとAccessとの連携の道のりは険しい。

今回は先にLOAD DATA INFILEコマンドで1万4千件のレコードをインポートしてから行った。試しに、空のデータベースに対して同じように検証した場合、上記のエラーは出ず、今のところ問題はない。

2007年3月 2日

【MySQL】データのインポート

MySQLで他のファイル(csvファイルとか)からインポートする場合、下記の4つのパターンがある。(もっとあるかも知れないが。。)

1.ACCESSのODBCを使う。
2.MYSQLクライアント(コマンドプロンプトで)LOAD DATA (LOCAL) INFILEコマンドを使う。
3.MYSQLIMPORTを使う。
4.ファイルに記述されたINSERT構文を実行する

mysqlimportは、文字コードの指定が効かないなど、あんまりいい思いをしていないので、LOAD DATA INFILEでの成功設定事例を掲載する。

【MySQL】データのインポートの続きを読む

2007年3月 1日

PHP文字化け問題

以前にもとりあつかっているが、PHPの文字化け問題だが、MySQLの文字化けを解決した後は、PHPを使ってブラウザに表示する時にも文字化けする。やっかいだ。サーバ、データベースの設定がしっかりしていてもだめなのだ。そんな時は、PHPスクリプトに明示的に記述してやるとうまく行くことがある。

PHP文字化け問題の続きを読む

XAMPPを設定する

XAMPPは各種設定ファイルがどこにあるのかわかりにくい。最近その索引を見つけた。これがないとねぇ。ちなみに日本語の最新版はXAMPP 1.6.0a 。PEARも標準でインストールされている。(パッケージのインストールはされていないが)

最新版の特徴:

* Apache 2.2.4
* MySQL 5.0.33
* PHP 5.2.1 & PHP 4.4.5
* phpMyAdmin 2.9.2
* FileZilla FTP Server 0.9.22
* OpenSSL 0.9.8d


参考

XAMPPを設定するの続きを読む

2007年2月18日

Javaに触れる

来週の火曜日から4日間、Javaで構築するWEBデータベース研修を受ける。現在はPHPとMS ACCESSでインターフェースの開発をしているんだが、Javaも勉強しておいてもいいかなぁという感じなんだけど、実はJavaには触れたこともなく、わくわくしている気持ちもあるが、少なくても研修までには感触だけはつかんでおきたい。Javaの習得は簡単じゃないと言われる。大丈夫だろうかと心配していたら、最近は初心者向けにEclipse+Visual Editorというのを使って学習できるらしいのだ。使ってみるとなるほど、マイクロソフトのVBみたいなGUIだ。VBほど使い勝手は良くないが、Java初心者には心強いツールであることには間違いない。


http://www.eclipse.org/

2007年1月18日

ERROR 1406 Data too long for Column [MySQL]

ACCESSのデータを1400件まではODBC経由でエクスポートできた。ただ、それ以降は、またオーバーフローか、ERROR1406だ。いろいろ試したんだが、結局このエラーメッセージで止まってしまう。やっぱり日本語の文字セットの問題かなとネットを徘徊して疑いだした。

文字セットの設定を設定ファイルで行っているにも関わらず、このメッセージが出てきていたので、よもや文字セットの問題と気づくまでに時間を要した。

今回の成功例では、
LOAD DATA INFILEコマンドを使う前に
mysql> set names sjis;
Query OK, 0 rows affected (0.00 sec)

をタイプする。

事前に同じテーブルの構造だけ、インポートさせておくか、作成しておいたほうがよい。
ただし、インポートしたデータは完全なものではない。ほぼ完全ではあるけれど。。

サーバーの文字セット状況を確認するには、
mysql> status
とタイプすればよい。

2007年1月12日

LOAD DATA INFILE不発

ACCESSのデータをMySQLに取り込む作業を行っているんだが、そのデータの件数はカラム(フィールド)が40個に対して1万2千レコードに及ぶ。これはもう手動では不可能な件数だ。やはり自動でデータを流し込みたいのだが、ODBC経由のACCESSからエクスポートをすると「オーバーフロー」というエラーがでてうまくいかないし、LOAD DATA INFILEコマンドを使っても「Data too long for column」というエラーがでてうまく行かない。エラーメッセージの意味を直訳すると、ひとつのカラムに対してデータが長すぎるという意味なんだが、意味が不明である。レコードを分割して、ODBC経由のACCESSからエクスポートをすると成功した。薗件数は1400レコード。8回は同様の作業が必要になりそうだが、たった8回でうまく行くのならまぁ、よしとするか。

実際は、ODBC経由でエクスポートしたテーブルにLOAD~を使ってインポートする。

2007年1月11日

カラム名は英数字

ACCESSのデータのカラム名(フィールド名)はだいたい日本語だ。MySQLにデータを移行する場合、データそのものが日本語の場合は、ほとんど問題ないのだが、フィールド名は大問題だ。ODBC経由でACCESSのみで使用するだけなら、あまり問題にならないのだが、PHPを用いてブラウザ経由で表示するような場合は、支障をきたす。英数字に変換する方法をとるのが手っ取り早い解決策ではないだろうか。

2006年12月22日

テキストデータをMySQLにインポート

ACCESSでデータの故障を3ヶ月で2回も経験したので、そろそろ本格派データベースへの移行を考えなくてはいけない。その前に、例えばバックアップをスケジュール化して自動にするという方法もある。

テキストファイルのMYSQLへのインポートの方法を3つ調べることができた。

1.ACCESSのODBCを使う。
2.MYSQLクライアント(コマンドプロンプトで)LOAD DATA (LOCAL) INFILEコマンドを使う。
3.MYSQLIMPORTを使う。

テキストデータをMySQLにインポートの続きを読む

2006年10月31日

XAMPPでMySQLにコマンドライン

XAMPPをインストールするとコマンドラインでMySQLにアクセスしたい時に戸惑う。そんな時は、mysql.exeがどこにあるか探して、

mysql -u [root] -p

とタイプする。

例)

>cd C:\Program Files\xampp\mysql\bin

C:\Program Files\xampp\mysql\bin>mysql -u root -p

Enter password:

XAMPPでMySQLにコマンドラインの続きを読む

2006年9月26日

XAMPP for Windows

これまでアパッチやMySQL,PHPのインストールを何度もトライした。ボチボチ慣れてきた頃に、これらの設定を一括できるソフトを発見してしまった。アパッチ2.2で失敗したことが馬鹿らしくなるくらい簡単にアパッチ、PHP、MYSQLがインストールできてしまった。しかも、PHPMyAdminもビルトイン。これは便利だ。しかし、それぞれが持つ個別のツールが使えなかったりして、以外に不便だったりして。とにかく今すぐPHPのスクリプトを書きたいとか、WEBサーバーを立てたいという人には無茶苦茶便利なツールだ。

個人的にはコマンドラインでMYSQLにアクセスしづらくなっているので、ちょっと不便。なれるまでに時間がかかりそうだ。

ダウンロードはこちら

XAMPP for Windowsの続きを読む

2006年9月23日

Apache2.2 × PHP5.16 インストール

MySQLを操作するGUIツールで一番有名なのはPhpMyAdminだ。今のところWEB連携DBを作る予定はないが、phpMyAdminは使ってみたいので、アパッチとphpをWindows2000SP4にインストールしたのだが、そこには思わぬ伏兵が潜んでいた。というかまだ解決してないけど。

Apache2.2 × PHP5.16 インストールの続きを読む