実務のデータ作業

こんにちは加藤です。

 

ここ数日、MySQLやらMariaDBにデータ入れ込む作業が多く、会社でひたすらデータ修正をしています。そんな中、「え?そんな事できるんですか?」とスタッフから聞かれて、そういえば単純作業とか教えてなかったなと思いますので、書いておきますね。

 

 

DBからダンプしたデータには魔物が住んでいると良く言われますが、良くあるのは文字列のカンマやダブルクォーテーション、そして改行文字などが入ってることがあります。実際の作業を記述してみますね。
結構、こういう地道な作業って慣れないと恐ろしい時間が掛かりますものね。

CSVなら秀丸凄く便利。まずはテキストエディタで確認。

WEB系の技術者だとphpMyAdminからインポートするというのが多いと思いますが、XXのカラムが合ってないですよーと怒られて、え?何が違うの?どこの行?え?と一度文字コードを変更してからエクセルでデータ文字列として確認という時間を取られるのは誰もが経験すると思います。

 

私の場合は秀丸とUnEditor、鈴川エディタ、vim、エクセル合わせ技が多いですが、例えば、データベースからダンプしたCSVデータが合った場合、どこのカラムが特定できても文字が多すぎて判別できないことは良くあります。
そんな時に便利なのが秀丸エディタです。

そんな時はさくっと秀丸で開きます。
秀丸 CSV開いた上に表示からタブストップ->CSVモードを選択します。

CSV カラム確認
そうすることで、エクセルのようにカラム毎、また足りない行が分かるようになります。
これは便利です。

3~4万行の場合はこれで事足ります。
それ以上になると、難しいのでスクリプトで対応するのがいいですね。

目安として、加工も含めて2万行を超える場合、1万行以下にしてphpでfgetsあたりでサクッと加工します。

改行文字

上記で大抵の場合は整合が取れますが、どうにもならないことがあります。それが見えない改行文字です。通常は正規表現で\r\nで
検索して置換しておこないますが、WindowsやUNIXなどの各環境では、それぞれ改行コードが違います。例えばWindowsでは「CR(=キャリッジ・リターン)+LF(=ライン・フィールド)」であるのに対し、UNIXでは「LF」です。そうなると、当然某ソフトだと\nだけなんてあります。一番怖いのはある行だけ改行文字が連打されている場合。
この場合1万行以下であれば、エクセルを使いましょう。
エクセル 改行削除
エクセル 改行削除”なんて検索すると良く見かける技ですが、置換ボタンで選択して、見えないけどCtrl+Jで改行文字を入れてあげて検索する方法です。
ちなみにこの技は経験上1万行以下、私の環境でもi7 2.67GHzメモリー32GB C:RAID SSD0でも2万行で途中で怪しくなりますので、5000行以下の場合に有効です。

結果:データ加工はツールの合わせ技がですよという事

結局、phpでも.netでもツールはその通り道具ですから、合わせ技を行い、その作業が多ければ、治具を作るみたいに簡単なツールを作るのが一番ですというのが結論ですね。
私の場合、上記の作業で難しい場合、直ぐにサーバーにアップしてスクリプトで作業してもらうのですが、いつかサクッとC#あたりで作るのがいいかもしれませんね。

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG