実務のデータ作業

こんにちは加藤です。

 

ここ数日、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#あたりで作るのがいいかもしれませんね。

加藤

この記事を書いた人:加藤

最近、古本マイコンBASIC(ベーマガ)を見つけて、ノルタルジーに浸る41歳。 
一応、会社の代表。
必殺技:機械を分解して組み立てるとネジを余らせる。


この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166