2010年3月15日月曜日

[MySQL] CSVやTSVファイルを対象としたデータ入出力方法

入力
文字の囲み文字が「"」のときの使用例。
囲み文字が必要ないときはENCLOSED BY '"'を外す。
[構文]
LOAD DATA INFILE "ファイル名" INTO TABLE テーブル名
FIELDS TERMINATED BY ',区切り文字' ENCLOSED BY '"';

[使用例]
LOAD DATA INFILE "c:/data.csv" INTO TABLE data FIELDS TERMINATED BY ',' ENCLOSED BY '"';

TSVの場合
load data infile "c:/data.tsv" into table data fields terminated by '¥t';

出力
[構文]
SELECT * FROM テーブル名 INTO OUTFILE "ファイル名" FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '囲み文字の指定';

使用例
select * from data into outfile "c:/out/data.tsv" fields terminated by '¥t';

以上です。

2010年3月14日日曜日

[Env] CentOSのセットアップ

MacのVMWare FusionにCentOSをインストールしました。

環境セットアップ情報を記録しておきます。

1.Apache&PHP
$ yum install -y php-mbstring

yumではインストールするパッケージに依存するパッケージもあわせてインストールされるため、php-mbstringを使用する際に必須となるApacheも自動的にインストールされる。






2.MySQL

$ yum -y install mysql-server // MySQLのサーバ
$ yum -y install mysql // MySQLのクライアント
$ yum -y install mysql-libs // MySQL関連のライブラリ
$ yum -y install mysql-devel // プログラムからMySQLへの接続に使用する







//状態を確認
$ service mysqld status
//起動
$ service mysqld start
//停止
$ service mysqld stop


以上です。

[Env] Sennaのインストール

とある案件でSennaを採用することになった。
Sennnaとは組み込み型全文検索エンジンです
Sennaプロジェクト

SennaをMySQLにバインディングするため、Tritonnをインストールする。
Tritonnプロジェクト

インストール環境
OS: CentOS release 5.4 (Final)[VM-Ware Fusion]


ビルドの大まかな流れ

1. MeCabをビルド
2. Sennaをビルド
3. Tritonnをビルド

Tritonnをビルドするためには、事前にSennaのライブラリ(libsenna)がビルドされている必要があります。またSennaをビルドするためには、MeCabのライブラリと辞書が事前にビルドされている必要があります(非MeCabなビルド方法は後述)。そこで上記のような手順でビルドを行います。


MeCabプロジェクト
gccをインストール
# yum install glibc glibc.i386
# yum install gcc*

y/Nでyを入力すること

g++をインストール
# yum install gcc-c++
少しイレギュラーなので注意

MeCabをビルド
# ./configure --prefix=/usr --with-charset=utf8
# make
# make install


# mecab-ipadic-2.7.0-XXXX
# ./configure --prefix=/usr --with-charset=utf8
# make
# make install

Sennaをビルド
# ./configure --prefix=/usr
# make
# make install


Tritonnをビルド
# ./configure --with-senna --with-mecab
error発生
configure: error: No curses/termcap library found
ライブラリが足りないらしい。下記コマンドでインストール。
# yum install ncurses-devel
# make
# sudo make install

ここも参考になる


最後の# make installが通らない。
y.tab.cがないとおこられる。

どうしたものか、調査中
(2010/3/14)

2010年3月10日水曜日

[PHP] キャッシュ手法まとめ

PHPでのキャッシュ手法をまとめる

1.中間コードキャッシュ
・APC
・eAccelerator
・XCache
・Zend Optimizer

APCが最も安定している
インストールコマンド
sudo aptitude install php-apc
sudo /etc/init.d/apache restart

管理画面apc.phpの導入
cd /usr/share/doc/php-apc/
sudo gzip -d apc.php.gz -c > /var/www/html/apc.php

GDのインストール
sudo aptitude install php5-gd
sudo /etc/init.d/apache restart

apache-benchコマンド
ab -n 500 -c 5 http://localhost/index.php
同時接続数5で500リクエストを送信


2.データキャッシュ
・ディスクキャッシュ
Cache_Liteの使用
インストール
sudo aptitude install php-pear
sudo pear install -Z Cache_Lite

・オンメモリキャッシュ

3.ページキャッシュ

2010年2月16日火曜日

[Reading] 2月読書リスト

2月に読んだ書籍
・ フリー~〈無料〉からお金を生みだす新戦略 クリス・アンダーソン、小林弘人、 高橋則明 (ハードカバー - 2009/11/21)

・日経新聞の数字がわかる本 「景気指標」から経済が見える 小宮 一慶 (単行本 - 2009/8/6)
経済に関する数字を意識できるようになったことで、日経新聞を読む際だけでなく、ニュースや雑誌で使用される用語につながりを見いだすことができるようになった。大変参考になった。

2010年2月15日月曜日

[MySQL] テーブルを結合するSQL

結合で使用するテーブル名には必ずエイリアスを貼りましょう。
SQL全体がコンパクトになり、見通しがよくなります。
構文:table_name AS alias_name

xoops_picoカテゴリテーブルより、特定のデータを抽出しカテゴリID順で並べ表示する
$sql = "SELECT cat_id, cat_permission_id, cat_title, cat_created_time, cat_extra_fields FROM xoops_gencontents_categories ORDER BY cat_id";

xoops_picoコンテンツテーブルより、特定のデータを抽出しコンテンツID順で並べ表示する
$sql = "SELECT content_id, permission_id, subject, created_time, extra_fields FROM xoops_gencontents_contents ORDER BY content_id";

コンテンツテーブルとカテゴリテーブルを内部結合
$sql = "SELECT con.cat_id AS cat_id1, cat.cat_id AS cont_id2 FROM xoops_gencontents_contents AS con LEFT JOIN xoops_gencontents_categories AS cat ON con.cat_id = cat.cat_id";

コンテンツテーブルとカテゴリテーブルを内部結合
$sql = "SELECT con.cat_title AS category_name, con.subject AS content_name, con.created_time FROM xoops_gencontents_contents AS con LEFT JOIN xoops_gencontents_categories AS cat ON con.cat_id = cat.cat_id"

コンテンツ、カテゴリテーブルとユーザーテーブルの3テーブルを結合
$sql = "SELECT cat.cat_title AS category_name, con.subject AS content_name, con.created_time, us.uname AS poster_user FROM xoops_users AS us INNER JOIN (xoops_gencontents_contents AS con INNER JOIN xoops_gencontents_categories AS cat ON con.cat_id = cat.cat_id) ON us.uid = con.poster_id";


以上です。

2010年2月8日月曜日

[Env] VMWare Serverを使用していて注意すべきこと

VMWare Serverは無料で使用できるため、重宝するが、
商用のVMWare Workstationと比較し、注意するべき点があります。

VMWare Serverはスナップショットを1つのみ許容します。
つまり、2つ目のスナップショットを取得した時点で、1つ目のスナップショットは破棄されるので、
うっかり必要なバージョンを消してしまわないよう注意が必要です。

VMWare Workstationではそのような制約はありません。
スナップショットマネージャーでいくつでも管理できます。


以上です。