56
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

MySQLのCSV出力が権限によって出来ない場合の対処法

はじめに :dolphin:

MySQLのSELECT文でcsvを出力する

を参考にCSVファイルを出力したのですが、環境によってはユーザ権限の問題等によりエラーが発生してしまいます。

「とりあえずCSV出力したいんじゃ :punch: 」という方への対処法を調査したのでこちらに記載いたします。

こんなエラーが発生する

ERROR 1 (HY000): Can't create/write to file '/tmp/fruits.csv' (Errcode: 13)
ERROR 1045 (28000): Access denied for user '{ユーザ名}'@'%' (using password: YES)

結論 :tada:

以下でザクッと解決

tsv

mysql -h {host名} -u{user名} -p {DB名} -e "{SQL}" > {ファイルパス}

具体的には…

mysql -h database.com -uadmin_user -p my_database -e "select * from fruits;" > /tmp/fruits.tsv

csv

mysql -h {host名}  -u{user名} -p {DB名} -e "{SQL}" | sed -e 's/^/"/g' | sed -e 's/$/"/g' | sed -e 's/\t/","/g' > /tmp/fruits.csv

具体的には…

mysql -h database.com -uadmin_user -p my_database -e "select * from fruits;" | sed -e 's/^/"/g' | sed -e 's/$/"/g' | sed -e 's/\t/","/g' > /tmp/fruits.csv

おわりに

原因として、MySQLログインユーザのファイル書き込み権限がなかったことなどが挙げられます。詳しく知りたい方は以下の記事が非常に参考になりますのでご覧ください。

MySQL SQL結果をINTO OUTFILEを使用せずCSV取得

MySQLリモートDBの結果をローカルCSVファイルに出力する方法

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
56
Help us understand the problem. What are the problem?