Rubyの改行コード[CR+LF]と[LF]

簡単なツール作るつもりが、はまってしまった。
忘れそうなので、解決策を残しておく。

やろうとしたのは、Excelデータの一覧表をちょっとフォーマット変えてMySQLのテーブルにロードするということ。
そのために、ExcelデータをCSV形式で保存して(ここまでは手動)、それをRuby使って読込んでMySQL上のテーブルレイアウトと同様のCSVファイルを書き出すプログラムをRubyで作成した。

数分でPGは完了したが、MySQLへのLOAD時にエラーとなっていた。
LOADが成功するファイルと見比べてみると、改行コードが異なることが分かった。
(このとき、ちゃんとしたエディタで開いたからすぐ分かって良かった。メモ帳なんかで開いてたら解決に至らなかったかも)

下記の記事の通り、書き込みファイルをオープンする際の指定を"w"(テキストモード)とするか、"wb"(バイナリモード)とするかで改行コードの指定が変わる。(Windows環境なら)

Win32のRubyで改行がCR+LFになってしまう