はじめに
を参考にCSVファイルを出力したのですが、環境によってはユーザ権限の問題等によりエラーが発生してしまいます。
「とりあえずCSV出力したいんじゃ 」という方への対処法を調査したのでこちらに記載いたします。
こんなエラーが発生する
ERROR 1 (HY000): Can't create/write to file '/tmp/fruits.csv' (Errcode: 13)
ERROR 1045 (28000): Access denied for user '{ユーザ名}'@'%' (using password: YES)
結論
以下でザクッと解決
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ログインユーザのファイル書き込み権限がなかったことなどが挙げられます。詳しく知りたい方は以下の記事が非常に参考になりますのでご覧ください。