mk_5884 Programming

自分で調べたIT関連のことなどを書いています

LINUX 踏み台のファイルをローカルに落とす方法

1. 踏み台の先
mysqldump -h $dbserver$ -u updator -p $dmname$ --no-create-info --default-character-set=ujis --single-transaction > stg_150918_1600.sql
※--single-transcation がないと落とせないので注意
find / -name stg_150918_1600.sql
※ダンプ取った時の階層にファイルはある
gzip stg_150918_1600.sq
 
2. 踏み台の前
sftp -oPort=22 user@123.456.78.90
sftp> cd ファイルを落としたところ
sftp> get stg_150918_1600.sql.gz
 
3. Winscpに繋げる

※2で落とした時の場所にファイルはあります。

 

MYSQL 実行結果をファイルに吐き出す

SQLサーバから吐き出す場合。

SELECT * FROM table_name
INTO OUTFILE "/tmp/mysql.csv"
FIELDS TERMINATED BY ',';
※FIELDS TERMINATED BY ⇒ カラムを何で区切るか。カンマの場合はcsvになりますね。

 

▼コンソールから吐き出す場合。

mysql -uroot -p -e "SELECT * FROM table_name" db_name > /tmp/mysql.tsv

 

★注意点

実行権限の関係で保存出来ない場合がある。
パーミッションが777のtmp配下に保存しましょう。

 

参考

MySQLの出力結果をファイルにはきだしたいとき - fukumuraのメモ

MYSQL トランザクション分離レベルを調べる

以下のコマンドを実行する
select @@tx_isolation;

MYSQLは、デフォルトが以下
REPEATABLE READ

↑これはデータを更新するときに待ちが発生しないことを示しているらしい。

例えば、トランザクションAでUPDATE⇒COMMITをしたあと、
トランザクションBでSELECT文を実行するとAの結果が見えてしまうんだと。

別にいいんじゃない?と思ってしまうが、DBの隔離性の観点から外れてしまうんだそうだ。
まぁでも、これで困ることは今の現場ではないかな・・・。
そもそも決済を1日にすればこんなことは起きなそうなのである。


▼参考

トランザクション分離レベルについて極力分かりやすく解説してみた[SQL] - 明日になったら本気出せる

MySQL テーブルのコピーを簡単に作る方法

こんな感じでやります

hogeテーブルのスキーマをコピーしてテーブル作成
CREATE TABLE hoge_20081123 LIKE hoge;

hogeテーブルのデータをINSERT
INSERT INTO hoge_20081123 SELECT * FROM hoge;

参考(と言うかコピペです。すみません。。)

MySQLでテーブルのコピーを簡単に作る方法 - oinume journal

MYSQL 他のテーブルのレコードをコピーする

他のテーブルのレコードをコピーするには、以下のように行います。

結構融通効きますよ。

http://mysqlphp.blog77.fc2.com/blog-entry-41.html

 

 

一括でINSERTするのは以下のようにしましょう

INSERT INTO `users` (`name`) VALUES ('foo'), ('bar'), ('baz');

PHP/MySQL でレコードを N 件ずつバルクインサート - Born Too Late

LINUX 履歴検索と実行結果をファイルに吐き出す方法

LINUXのコンソールで履歴を検索する

history | grep hoge

 

LINUXでバッチの結果をファイルに吐き出す

/batch/bin hogehoge.php > a.log
⇒同じhogehoge.phpと同じ階層に「a.log」ファイルが出来る