豚吐露@wiki
selectの結果をfile出力したい
最終更新:
ohden
-
view
selectの結果をfile出力したい
CentOS 6.4
MySQL 5.1.69
MySQL 5.1.69
selectの結果を出力したい場合は、以下のようなsqlを記述する。
mysql> select * from tbl_hoge -> into outfile "【出力ファイル名】" fields terminated by '【デリミタ】';
要は、出力したいsqlの後ろに『into outfile』以降を追記するだけ。
更に後ろに『optionally enclosed by '【囲み文字】';』を書くと、出力カラムの値の前後に付く文字を指定できる。出力する値にデリミタと同じ文字が含まれているなどの場合に必要になる。
更に後ろに『optionally enclosed by '【囲み文字】';』を書くと、出力カラムの値の前後に付く文字を指定できる。出力する値にデリミタと同じ文字が含まれているなどの場合に必要になる。
e.g.) mysqlのuser情報をcsv形式で出力
mysql> select * from mysql.user -> into outfile "mysqluser.csv" fields terminated by ',';
Query OK, 6 rows affected (0.00 sec)
出力されるのは、実際にmysql DBが存在するpath。
上記の結果は、『/var/lib/mysql/mysqluser.csv』に出力された。
e.g.)
上記の結果は、『/var/lib/mysql/mysqluser.csv』に出力された。
e.g.)
# cat mysqluser.csv
%,user_redmine,*****************************************,N,N,N,N,N,N,N,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,,,,,0,0,0,0
%,user_concrete5,*****************************************,N,N,N,N,N,N,N,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,,,,,0,0,0,0
localhost,hogeuser,*****************************************,N,N,N,N,N,N,N,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,,,,,0,0,0,0
localhost,mt6user,*****************************************,N,N,N,N,N,N,N,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,,,,,0,0,0,0
%,root,*****************************************,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,,,,,0,0,0,0
他のDBを選択した場合だと『/var/lib/mysql/【DB名】/【出力file名】』に出力されましたね。
で、file出力しようとすると、こんなんが出て怒られる事がある。
ERROR 1045 (28000): Access denied for user 'hogeuser'@'localhost' (using password: YES)
これはmysqlにloginしているuserがOSのfile systemに対する操作権限を持っていないために起こる。
権限の確認方法は以下のsqlを実行。
mysql> select user, file_priv from mysql.user;
file_privが『N』になってたらfileの操作権限がありません。
なので、操作権限を与えてあげましょう。
mysql> update mysql.user set File_priv='Y' where user='【変更対象のuser名】';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
この後で再度file出力を試みればちゃんと出力されるハズ。
更新日: 2013年07月12日 (金) 18時10分48秒