(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