方法1. mysqldump を使う
csv形式で出力する例
$ mysqldump -u{ユーザー名} -p --tab=/tmp --fields-terminated-by=, {DB名} {テーブル名(省略可能)}
Enter password:パスワードを入力
qiita – MySQLのデータをcsv,tsv形式でダンプする
これが王道やもしれぬ。
–tab オプション って?
--tab=
オプションを付けて、mysqldump を呼び出した場合、それはdir_name
dir_name
を出力ディレクトリとして使用し、
保存先のディレクトリらしー。
テーブルごとに 2 つのファイルを使用して、そのディレクトリに個別にテーブルをダンプします。テーブル名はこれらのファイルのベース名です。
t1
という名前のテーブルの場合、ファイルにはt1.sql
およびt1.txt
という名前が付けられます。.sql
ファイルにはテーブルのCREATE TABLE
ステートメントが含まれます
2つファイル作られる。
試してみて気づいたんだが、内部で後述の「方法2」の「INTO OUTFILE」を使用しているっぽい。
使用するには、MySQLからOSのファイルを操作可能になる「FILE」権限を持つユーザーでなければならない。
方法2. SQLの INTO OUTFILE を利用する
select * from user into outfile '/Users/***/Desktop/sql/sample.csv' fields terminated by ',' enclosed by '"' escaped by '"' lines terminated by '\r\n';
最後の\r\n は、改行コードっすな。
Linuxだと\nになるのかなー
SELECT * FROM users INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';
では改行コード指定してないっすなー。
使用するには、MySQLからOSのファイルを操作可能になる「FILE」権限を持つユーザーでなければならない。
コメント