SQL を CSV にエクスポートしたけど、Excel でうまく読み込めなかった

  • MySQL

Tableplus という SQL クライアントソフトを使用しているのですが、とあるテーブルの内容を CSV に変換するという作業がありました。

幸い、Tableplus ではテーブルを右クリックして Export できるので、CSV として出力したのですが Mac の Excel で色々と問題がありました。

Excel for Mac での問題

文字化けする

エクスポートした CSV をそのまま Excel で開こうとすると、おそらく文字化けます。どうやら Excel で開いたときに文字コードが Japanese(Mac OS) となっており、ファイルの文字コードと同じものを選ぶ必要がありそうです。

今回のファイルは UTF-8(Unicode) だったのでそちらに変更したところ日本語になりました。残りは、CSV なので区切り文字をカンマとし、文字列として読み込みます。

改行がおかしい

先ほどの設定で読み込んだところ、

このテキストファイルのデータは、1 つのワークシートに入りきりません。

とアラートが表示され、シートに1行しか追加されませんでした。よく見て見ると、改行のあるところでデータが切れているようです。

改行コードを確認

Excel は \r\n を改行としてみなすので、\n の改行が入っているとおかしくなるようです。他のテキストエディタなどを開いて、改行コードを全て \r\n に置換します。

テキストエディタの Atom では右下に改行コードが表示されおり、クリックすると変更することができます。LF もしくは Mixed(改行コードが入り混じった状態)になっていたら、今回ばかりは CRLF に変換します。

でもやっぱり改行がおかしい

ダメなものはダメということでしょうか。データは入ったものの、セル内の改行がうまく反映されず、改行の次の文字列から下の行にデータが入ってしまい、構造がめちゃくちゃになってしまいました。

文字列は""で囲むことによって、その中の改行はそのセルの中だけで行われると思っていんですが、どうも様子がおかしいです。そもそも、UTF-8 に変更する前はセル内で改行できていたので、UTF-8 に変換していることが何か影響しているのか…?

解決策(根本的には解決してません)

google spreadsheet を使う

原因が分からず、最終的に Google スプレッドシートを使いインポートしてみると綺麗にデータがインポートできました。もしかしたら、文字コードを Shift-JIS に変換してから Excel で読み込めばうまく行くのかもしれませんが、、めんどくさい。