Redash からダウンロードできる CSV ファイルの改行コードが CRLF だった。
Redash からダウンロードできる CSV ファイルの改行コードが CRLF なんだー、と思ったのでメモ。
書いた動機
Redash はクエリーの結果を CSV ファイルでダウンロードすることができるので CSV ファイルをいろいろ加工したりしてとても便利なのだが、Redash からダウンロードした CSV ファイルの改行コードが CRLF であることに気が付かず軽くハマった。
自分は忘れっぽいので時間がたつとまたハマりそうなので忘れないように書いておく。
Redash からダウンロードすることができる CSV の改行コードは CRLF
ダウンロードするものがないと始まらないので、おそらく日本の Redash ユーザーの7割くらいはお世話になっただろう kakakakakku さんの redash-hands-on の city
テーブルからデータを引っ張ってみる。
こんな感じの雑な SQL で引っ張ってきたデータの CSV ファイルをダウンロードする。
select * from city limit 3;
で、おもむろに file コマンドで見てみると改行コードが CRLF であることが分かる。
$ file city.csv city.csv: ASCII text, with CRLF line terminators $ cat city.csv ID,Name,CountryCode,District,Population 1,Kabul,AFG,Kabol,1780000 2,Qandahar,AFG,Qandahar,237500 3,Herat,AFG,Herat,186800
一見したところこのファイルは人畜無害なのだが、そのままだと CLI で軽く困ったりする。 たとえば、次のような単純なコマンドもおそらく意図しているとおりには動かない。
$ cat city.csv | xargs -I{} echo "**{}**" **ID,Name,CountryCode,District,Population **1,Kabul,AFG,Kabol,1780000 **2,Qandahar,AFG,Qandahar,237500 **3,Herat,AFG,Herat,186800
ではどうすればいいかというと、CR をとってしまうのが一番簡単 (たぶん)
$ cat city.csv | tr -d \\r | xargs -I{} echo "**{}**" **ID,Name,CountryCode,District,Population** **1,Kabul,AFG,Kabol,1780000** **2,Qandahar,AFG,Qandahar,237500** **3,Herat,AFG,Herat,186800**
Redash からダウンロードする CSV ファイルの改行コードの設定とか Redash のどこかにありそうなものなんだけど、3分くらい探して見つからなかったので雑に CR を削除することにしたときのメモは以上。