前のページ < | > 次のページ

(10) MySQLでその他の便利な機能を使う2

トランザクション、ファイル入出力、ダンプとリストア、ロック

トランザクション

●ストレージエンジンの種類
ファイル操作をするストレージエンジンにはいくつか種類があり、
その種類を指定することができます。
ストレージエンジン 特徴
MyISAM(マイアイサム) 最もよく利用される。高速。
InnoDB(イノディービー) トランザクションに対応。MyISAMより処理が遅い。

●ストレージエンジンの指定
現在のストレージエンジンの確認
show create table tb;

ストレージエンジンをInnoDBに設定
alter table tb engine=InnoDB

●トランザクション
トランザクションとは操作をひと括りにして、元に戻すなどの機能を使えるようにすること。
  • トランザクションが利用できないもの。
drop
alter table

トランザクションの開始
start transaction;
テーブルを消してみる。
delete from tb;
テーブルの内容を確認。
select * from tb;
(1) ロールバックして元に戻す。
rollback;
(2) ロールバックせず、処理を確定する。
commit;


●自動コミット機能をオフにする
普段はcommitせずに処理が確定しており、自動コミットが働いているといえる。
そこで、この自動コミット機能をオフにしてみたらどうなるか?

自動コミット機能をオフにする
set autocommit=0;
例えば、insertコマンドを使ってみる。
insert into tb values('test',555,555);
テーブルを確認してみる。
select * from tb;
ロールバックしてみる。
rollback;
さらに、テーブルを確認してみる。
select * from tb;
なんと、ロールバックできていました。

最後に、自動コミット機能をオンにしておく。
set autocommit=1;


ファイル入出力

CSVファイルの読み込み
load data infile ファイル名 into table テーブル名 オプションの記述;
オプションの記述例)
fields terminated by '\t' :区切り文字
lines terminated by '\n' :改行文字
ignore 0 lines :最初にスキップする行

例)
load data infile 'c:/data/t.csv' into table tb1N fields
terminated by ','

CSVファイルの書き出し
select * into outfile ファイル名 オプション記述 from テーブル名;

例)
select * into outfile 'c:/data/out.csv' fields terminated by ',' from tb1;
ターミナルから確認。
type c:\data\out.csv


●ファイルのSQL文を呼び出して実行
MySQLから実行
source c:\data\sql.txt
コマンドプロンプトから実行
mysql db1 -u ユーザ名 -pパスワード -e "source c:\data\sql.txt"
例)sql.txt
use db1;
select * from tb1;
exit


データベースのバックアップとリストア

データベースのすべての内容を書き出すことをダンプ(dump)する、という。
逆にダンプしたデータをデータベースに戻すことをリストアという。
●ダンプ
mysqldump -u ユーザ名 -pパスワード データベース名 >出力ファイル名;
例)
mysqldump -u root -p1234 db1>db1_out.txt

●リストア
データベースdb2を作り、
mysqladmin -u root -p1234 create db2;
そこにdb1_out.txtを使ってリストアする。
mysql -u root -p1234 db2 < db1_out.txt

↑でエラーが出る場合は、文字コードによるエラーが考えられる。
文字コードを指定してリストア
mysqldump -u root -p1234 db1>db3_out.txt --default-character-set=utf8;
mysqladmin -u root -p1234 create db3; or =sjis
mysql -u root -p1234 db3 < db3_out.txt --default-character-set=utf8;


ロック

テーブルをロックすることができる。
ロックを掛ける
lock tables テーブル名 ロックの種類;
例)
lock tables my_table READ;
ロックを解除する
unlock tables;

●ロックの種類
種類 内容
READ to read only. select以外は使えない。
READ LOCAL read only. 操作したクライアントはselect以外は使えない。
WRITE 操作したクライアント以外は操作不可に。


※ XAMPP 1.7.7 [PHP: 5.3.8] での設定項目です。






前のページ < | > 次のページ
◆ ◆ ◆

最終更新:2012年01月30日 17:30