WorkToolSmith仕事や生活に役立ついろいろな商品をおもしろおかしく体験レビュー!当サイトの記事にはアフィリエイト広告が含まれます。2023.02.25どうも太田アベル(@LandscapeSketch)です。ビックデータ分析とかDBの移植とか、データの移動時に必ず登場する「CSV」。中身は単なるテキストで、行ごとにコンマで区切ってある、あのファイルですね。タブで区切ってあればTSVになります。他にもセミコロンやパイプで区切ってあるファイルも存在するようですね。CSVはたいてい少ないデータをまとめたものですが、ビックデータの分析用とか過去のDBの移植になると数百MB、さらには数GBというとんでもないCSVファイルができあがることもしばしばあります。ちなみに、100MBのCSVをエクセルで開こうとすると、だいたい10秒ぐらいかかります。高速動作で有名な、フリーのCSVエディタ「SmoothCSV」でも、2~3秒。500MBのCSVをエクセルで開こうとすると、「ファイル全体を読み込むことができませんでした」という虚しいメッセージが表示されます。SmoothCSVでは10秒ほどでなんとか表示可能でした。i7-9700、メモリ32GB)でもそんなCSVが1つならまだしも、30個とかあったらどうします?開いてチェックするだけでもかなりの時間のロスです。他の方法としてはファイルを分割して編集し、結合するSQLiteなどにインポートして編集し、再度エクスポートするAccessに入れて編集し、エクスポートするsedやGrepを駆使してなんとか探すとりあえず本番のクローンに突っ込んで、何が起こるか試す(笑)こんなところがありますが、どれも一手間も二手間もかかって面倒な上に、待ち時間ばかりでなかなか前へすすみません。DBにいきなり投入しようとした場合、文字化けとか文字数オーバーとか項目エラーとかいろいろ発生して、エラーログとにらめっこで一つ一つ解析しなければならないことも。そこで!僕がメインでCSVをいじるのは、EmEditor(エムエディタ)。「テキストエディタでしょ?CSV編集なんてカラムが無いから見づらいし、まちがってコンマや改行を削ってズレるし、苦労は同じだろ」と指摘したくなるところでしょうが、これを見てください。クリックで拡大テキストエディタだけど、カラム表示できます!あと、これ1.66GB、3300万行という巨大すぎるCSVなんですが、エクセルではもちろん読み込み不能。SmoothCSVはがんばって開こうとしてくれますが、CPUが全コア100%に張り付き、3分以上たっても開きませんでした。(途中で強制終了しました)しかし、EmEditorなら1秒で開きます。EmEditorなら1秒で開きます。重要なので2回書きました。これは比喩ではありません。遅くても2秒で開きます。公式サイトギガバイト単位のテキストもサクサク編集できる、最強のエディタEmEditor。基本的にはテキストエディタCSVの変換や操作も充実3000万行をソート可能!ブックマーク機能で抽出!プロのデータ処理に必携WTS的まとめEmEditorを入手まずEmEditorを公式サイトからダウンロード。無料体験版も、フリー版もあります。(※ただしフリー版は、当記事の話題である”CSV編集機能”がありません。ご注意ください)フル機能版は有料ソフトですが、30日間は無料で全機能が使えます。CSV編集機能は有料版のみとなりますのでご注意ください。6,160円、2年目以降半額。40,040円)試用中はときどき「登録してね」というウィンドウが出ますが、そんなにうるさくはありません。基本的にはテキストエディタEmEditorを開くと、上に多数のツールが並ぶ、ちょっと懐かしい感じの画面が開きます。Codeなんかと比べると、クラシカルな雰囲気。各種プログラムコードの色付けもしてくれます。ミニマップやアウトライン、日本語の全角/半角変換、ソートやマクロなど、高機能エディタに求められる機能はほとんどを網羅。機能ごとにツールを切り替える必要がほとんどありません。目玉(?)は、他に類を見ない最強のCSV編集機能。冒頭に書いたとおり、どんな巨大なCSVでも、平気で開きます。100MBだろうが1GBだろうが、1秒か2秒で開きます。連番フィル列ごとの移動/削除/挿入など、表計算ソフトの基本的な動きを装備しています。こちらはCSVモードのサブメニュー。どんな事ができるか一覧できます。開発者向けを意識しているからか、IPv4やIPv6でのソートがあるのが珍しい。複数列を参照してのソートも装備。クリックで拡大CSVの変換や操作も充実CSVは、ダブルクォーテーションの付加や除去、他のCSV形式(タブ区切り、パイプ区切りなど)に変換することも可能。プログラマも使うエディタなので、あらゆる文字コードへの変換もあたりまえに、かつ正確にできます。SO/SI(50222)、UTF-8、UTF-16が使えます。(UTFはエンディアン、BOM有無も指定可能)サロゲートペアなども問題なく対応しています。古~いDBからJISで半角カナが嵐のように使われているデータが2GBほど出てきて、それを正規化して新DBにUTF-8でインポートしてくれ、という要望が来たらどうします?エクセルでやる場合、ほかにいくつのツールが必要になるでしょうか?軽い地獄が待っているのが、容易に推測できます。EmEditorなら開いてそのまま編集、UTF-8で保存するだけですね。半角カナが悪夢のように文字化けすることはありません。半角カナのみを全角にするのも朝飯前!連番を作成するフィル機能も搭載。最初の行に1、次の行に2を書き、選択カーソルの右下をひっぱると、さっと連番が作成されました!エクセルでおなじみの機能ですが、テキストエディタで搭載しているのはほぼありません。セルを選択してのコピー、カラムまるごとのコピーも可能。ここまで来ると、もはやテキストエディタではないような感じですね。思わず関数や計算式を埋め込みたくなりますが、さすがにそこまではムリです。3000万行をソート可能!CSVも、文字列もソートできます。CSVならカラムごとのソートも可能。i7-9700で約48秒でした。時間はかかりますが、これほどの行数を待っているだけでソートできるんですから、十分な機能でしょう。10万行程度なら1、2秒です。巨大ファイルをソートした場合はファイル保存時にも時間がかかりますが、これも待っていればOKなので、よしとしましょう。(3300万行でおよそ6分かかりました。保存時に実データを動かしているのでしょう。この場合、一時的にディスクをかなり消費するので注意したいところ。ソートをしなければ3秒ほどで保存できました。)EmEditor以外のテキストエディタは、基本的に1行単位で扱うので、特定カラムのソートということが、まずできません。ソートすると行頭の文字でソートしてしまいます。エクセルでやろうとするとまず読み込めないので、ちょいと200個ぐらいに分割して、それぞれでソートするしかありません。ファイルをまたいでのソートはできないので、結局ムリということです。他には、AccessとかSQLiteのようなデータベースに入れてみるしかありません。テキストでいじればすぐ終わるところを、わざわざデータベースへインポート&エクスポートをしないといけない、というのはかなり時間のロスと言えるでしょう。文字コードが違う場合、DBの出し入れで値が化けてしまう可能性も無視できません。(会計データで数字の丸めが変わったら・・・おお恐ろしい!!)ブックマーク機能で抽出!CSVの編集時は、特定の行を行ったり来たりすることがあります。これもなかなかめんどう。EmEditorにはブックマーク機能があり、テキストだけではなくてCSVにも使えます。ジャンプするだけの機能ではありません。ブックマークされた行だけを切り取り/コピーしたり、同時選択状態(同時編集状態)にすることもできます!目で見て別ファイルに行を抽出する作業を考えてみましょう。別ファイルにペーストと繰り返す作業です。F2でブックマークしまくるそして全てをブックマークしたら、「ブックマークされた行を抽出して新規作成」を選べば、サクっと選択項目だけのファイルに!!ヤバいほど便利。プロのデータ処理に必携EmEditorは「テキストファイル万能ツール」として、僕は10年近く愛用しています。プログラム開発の末期となるデータ移行、データベース変換などで、EmEditorはかなり活躍します。どんなに巨大であっても気にせず開くことができ、日本語を含め、文字コードの処理も正確です。EmEditor前は、秀丸やLinuxのsedやgrepをこねくり回して編集していましたが、EmEditorを手に入れてからはまったく必要なくなりました。なんでも開いてザクザク編集できます。EmEditorから別のソフトを行き来することもないので、集中して作業ができるのもうれしい。DB投入前のゴミ取り、正規化がとにかく早い。文字化け、エンコード違いによるインポートエラーなど、あらゆる状況に即座に対応できるので、非常に心強い。手直しをしながらインポートするときなど、時間をかなり短縮できます。テキストエディタ界のサバイバルナイフ、と言えるかもしれません。WTS的まとめEmEditorは動作がかなり早いのもいいところです。起動は1、2秒、巨大なファイル内のジャンプも一瞬です。雑処理をこなすためのエディタとして、最高峰といえます。あ、もちろんプログラミングや普通の文書作成でもOKですよ!記事は見つかりませんでした。公式サイトギガバイト単位のテキストもサクサク編集できる、最強のエディタEmEditor。C530コメントコメントをどうぞメールアドレスが公開されることはありません。アベル1976年生まれ。