• ベストアンサー

CSVファイルが操作できるソフト

いつもお世話になっています CSVファイルの特定の項目について、文字を加えたいのですが、件数が膨大 なため(15万レコード程度)、エクセルで操作することができません。 文字を加えるというのはこのようなイメージです  012011,012225,125666,54855~      ↓  012011,K012225,125666,54855~ 分割してエクセルによみこまして処理することも考えたのですが、大変手間でも ありますので、このような機能があるようなCSVファイル操作できるフリーソフト はありませんでしょうか? 

質問者が選んだベストアンサー

  • ベストアンサー
  • akamanbo
  • ベストアンサー率17% (462/2680)
回答No.5

たぶん他の方の回答で解決されたかと思いますが、せっかくなので。 >エディタでもできそうですね。 どうなんでしょう。この置換はたとえば秀丸エディタでも可能ですが、15万レコードに対し置換をかけると、どのくらい時間がかかるのか… ちょっと私にはわかりません。(というかそもそもエディタで開けるのかがわからないんですが、もし無理だったら済みません。) >どのように置換すればよいか、差し支えなければご教示いただけませんでしょうか? shift-jisであることが前提です。 まず、最初の数値の前が改行されてないとダメなので、1行空けます。 012011,012225,125666,54855 で、最初の列は6桁みたいですので、このソフトで正規表現で行なうとすると、 「\n([0-9]{6})\,」→「\n$1,K」となります。 (秀丸だとちょっと異なります。) \nが改行、()内がワイルドカード、\,はエスケープした「,」です。置換後の方で、$1で()内を展開し、「,」の後にKを追加しています。 なお、このソフトでの正規表現にはhttp://www.vector.co.jp/soft/win95/util/se142895.htmlに書いてあるように、 ↓のDLLのインストールが必要です。 http://www.hi-ho.ne.jp/babaq/bregexp.html インストールといっても、ソフトのexeと同じフォルダにDLLファイルを置くだけですが。

satoumasaru
質問者

お礼

正規表現のご教示ありがとうございます。私はエディタの秀丸をもっています。おそれいりますが、秀丸での正規表現についてご教示いただけませんでしょうか。

その他の回答 (6)

noname#9720
noname#9720
回答No.7

akamanbo さんの仰られた Speeeeed 古いバージョンがありましたので、 http://www.vector.co.jp/soft/win95/util/se142895.html で 新しくし、約18万行の.DBFをCSVにおとし、やってみましたところ、5秒ぐらいで(書換1項目=該当レコード約1万件)すみました。 TEXTのみと思ってましたが、中々いいですね。 解凍したてのSpeeeeed初期設定では *.bat;*.cgi;*.css;*.htm;*.html;*.js;*.log;*.pl;*.shtml;*.txt のみで、csvは入っていませんので、CSVを追加するか、全てのファイル(*.*)で 置き換えするファイルを指定すればOKです。

参考URL:
http://www.vector.co.jp/soft/win95/util/se142895.html
satoumasaru
質問者

お礼

ありがとうございました。このソフトをDLして、実行したところ、うまくいきました。 fishing88さんのお礼の欄をかりて、回答をいただいた皆様にお礼申し上げます。わずか半日の間に多くのアドバイスをいただき、感謝しています。おかげでなんとかなりそうです。これからも機会がありましたら、よろしくご指導下さい。本日はありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

Perlを使いましょう。 KplusNo2.pl $"=','; while(<>){ @data=split(/,/,$_); $data[1]="K".$data[1]; print "@data"; } 使い方 Perl -i.bak KplusNo2.pl data.csv 元のファイルは、拡張子.bakを付けて保存されます。

satoumasaru
質問者

お礼

ご教示ありがとうございます。しかしデータベースでさえ敷居が高い私ですので、Perlまではちょっと・・・

  • hogehage
  • ベストアンサー率50% (54/107)
回答No.4

そうでした、先ほどのは列単位がNGでした。 シェアウェアですが、「ListPad」は、かなり評判がよいようです。 このページの一番下にあります。 http://www2.lint.ne.jp/~lrc/da_csvedit.htm ReadMeから抜粋しておきます ------------------------------  ListPadはシェアウェアです。継続的なご利用に際しては登録が必要となり ます。詳しくはヘルプの「シェアウェアについて」をご覧ください。機能制限 はありませんが設定読み込みの度に登録状況を見、未登録の場合は5分の1の 確立でリマインダーが出ます。具体的には起動、設定変更、絞り込み検索の 時に設定を見ています。 ------------------------------

satoumasaru
質問者

お礼

ありがとうございます。早速DLしてやってみました。しかし、このソフトで10万件以上の処理をするは無理のようで、フリーズしてしまいました。

  • hogehage
  • ベストアンサー率50% (54/107)
回答No.3

これは、どうでしょうか。 「Csviewer」 http://www.vector.co.jp/soft/win95/util/se351269.html 試してみたところ、20列で、20万件を読み込みして、 検索・置換は出来ました。 ただ、編集はセル単位は行えなく、検索・置換のみのようです。

satoumasaru
質問者

お礼

早々のご教示ありがとうございました。たしかに、このソフトは読みとり能力はすごいですね。でも、思うように置換ができません・・特定の文字ならば置換はできるのですが、同一の列のみに特定の文字を加えたいのですが・・

  • akamanbo
  • ベストアンサー率17% (462/2680)
回答No.2

CSVですか… 私なら、強引にテキストファイルとして http://www.vector.co.jp/soft/win95/util/se142895.html このソフトで処理すると思います。 改行文字を利用し、正規表現で置換処理を行なえば、おそらく可能ではないかと。 他にもっといい方法があるかも知れません。

satoumasaru
質問者

お礼

早々のご教示ありがとうございます。改行文字を利用しての正規表現での置換ですか。エディタでもできそうですね。どのように置換すればよいか、差し支えなければご教示いただけませんでしょうか?

  • tomy06
  • ベストアンサー率25% (58/224)
回答No.1

件数が多いのでデータベースを利用されてはどうでしょう。 フリーだとMysqlというソフトが有名です。 SQLを多少勉強しなければいけないですが、ご要望の操作も簡単に出来ますよ

satoumasaru
質問者

お礼

早速のご教示ありがとうございます。データベースソフトですね。SQLですか・・すこし、敷居が高いような気がします。

関連するQ&A

  • CSVファイル操作

    VBでCSVを操作しているのですが、わからないことがあるので教えてください。 1.CSVファイル(改行区切り)のレコード数を取得するにはどうすればいいですか? 2.CSVファイル(改行区切り)の最初のレコードのみ削除するにはどうすればいいですか?   また、レコードを指定して削除することはできますか? 3.CSVファイル(改行区切り)のレコードを指定して内容を変更することはできますか? Windows XP , VB6

  • 検索とレコード数(CSVファイルより)

    PHP初心者です CSVファイルを参照して 項目で検索 検索した内容のレコード数(件数)を 表示させる関数(方法)を教えて頂きたいです 今までMysqlで操作していたのですが CSVファイルに変わって 困ってしまいました よろしくお願いします

    • 締切済み
    • PHP
  • 大量のCSVファイルの各レコード件数を調べるには?

    CSVファイル(約150個)を結合した上であるツールで 処理をしたいのですが、結合前後でレコード件数が同じか どうか調べる必要があります。 結合前のファイルを一つずつ開くのは時間がかかるので、 何かいい方法はないでしょうか? (VBやACCESSは使えないので、フリーソフトか何かを  紹介頂けると助かります)

  • CSVファイルをExcelで読み込むと

    CSVファイル中の項目 "01-03"などが、Excelでは 勝手に 1月3日などに変換されてしまいます。 もちろん、拡張子を.txtに書き換えて、毎回フィールドを 文字列属性にして読み込んでやればいいのでしょうが、 なにぶん量が多いので、毎回毎回こんな操作をするのは めんどくさいのです。 CSVファイルのままで、項目を勝手に変換させないで読み込む方法はありませんか??

  • Access2000 CSVファイルのインポート

    アクセスでCSVファイルをインポートしようと思うのですが CSVファイルに項目がありません。 COBOLで作成したファイルなのですが レコードだけの状態です。そのままインポートしようと しても文字化けのような感じになります。 どうしたらよいでしょうか?

  • JavaでCSVファイルを高速に読む方法

    最近、とある任務があって「数百万レコード」のCSVファイルを読み、 統計解析を実施するAPを自作したいと考えています。 しかし、ファイルのレコード数が膨大なため、解析する前にファイル読み込みに 大きな時間がかかってしまい困っています。 読み込みを高速化するために、複数のスレッドを用意し、スレッド毎に読みこむ レコードの行を決めて、並列処理を行いたいと考えたのですが・・・ ・任意の行をランダムに読むためRandomAccessFileクラスの利用を  考えたがレコードが固定長でないと利用できない。 という点があり断念しています。私も詳しくはわかっていないのですがHadoopという 技術を使ってファイルを分割して並列処理するといった方法が取られているようですが ファイルを高速に読み込む方法について、この質問を見ていただけた方の中で こうすれば高速化できるというノウハウがもしあればご教授いただけるとありがたいです。 またできれば、複数の筐体にファイルを分割して分散処理するという大掛かりの手法ではなく、 一つの筐体で並列処理して高速化したいと考えています。 Javaは、あまり詳しくなくとんちんかんな質問かもしれませんがどうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • ファイルサイズの大きいCSVデータを分割出来るソフト

    こんにちは。 仕事上で問題に詰まり、ご質問です。。 一つのCSVファイル(Excelで開いてます。)があり、 このファイルのサイズが、「 40MB 」あります。 このファイルを、それぞれ2MB以内の複数のファイルに 分割しなければいけません。 手作業ですと、上手く2MB以内でファイルを分割することも困難です。 このような場合、何かExcel上で簡単に分割できる方法などは ありますでしょうか。 もしくは、そのような分割の出来るフリーソフトなどは あるのでしょうか。 よろしくご回答お願い致します。

  • 大容量のファイル処理(csv or xml?)

    大容量のファイルの処理(csv形式、xml形式どちらが適切でしょうか?) 商品のアクセス件数を分析する仕組み(ツール)を提案したいのですが、 肝心のアクセス件数結果が出力されるファイルが膨大な場合が多くどのように処理すればいいか 途方にくれています。 結果ファイルの中身は「どのユーザーが何時何分に何にアクセスした」 という結果が一行一行出力されています。 ユーザーA 12:00 商品A ユーザーB 12:22 商品C ・ ・ ・ といった様相です。 *結果ファイルはcsvファイル、またはxmlファイルで出力できます。 一日程度の結果であればcsvファイルをエクセル2007で開き自力で色々といじることが できるのですが、数日~数か月におよぶとデータ行が膨大になりエクセルの最大行数1048576を 簡単に超えてしまい処理に困っています。 当初はエクセルマクロを使い分析ツールを依頼しようと考えていたのですが、すぐにこのデータ量で 素人目にも難しいとわかりました。 このような大きなファイルの中身の分析はxmlファイルの方が 分析ツールを作成する側としても処理(ファイルの取り込みや中身のソートなど)しやすいものなのでしょうか? なにぶん浅学なため、今まで使っていたエクセルでどうにかこうにかしてきたのですが、 流石に限界なのかと感じています。 どなたかご助言いただけますと、幸いです。よろしくお願いいたします。

  • Access又はExcelで256項目を超えるCSVファイルをインポートしたい

    たとえば500項目(フィールド)あるCSVファイ ルを取り込みたいのですが、AccessもExcelも 256項目までしかインポートできません。 500項目を200項目ごとに  1回目   1~200項目まで  2回目 201~400項目まで  3回目 401~500項目まで 分けてでもいいのですが。 又直接でなくても 別途、エディッタを使うとかで加工後、Access にインポートするでもOkなんです。 ただ、レコード件数が多いため1レコード毎に加工 するのは無理なんです。 何かよい方法はないでしょうか? 

  • 2つのCSVファイルをマッチング

    ソート済みの2つのCSVデータをシーケンシャルマッチングし、お互いの不一致レコードと一致したレコードとをそれぞれ別ファイルに出力するwshを作成しました。 件数が多くなればなるほど、処理時間がかかってしまうようです。 シーケンシャルマッチング以外の方法で効率のよい方法はないでしょうか? 最近勉強を始めたばかりの初心者ですが、宜しくお願いします。

専門家に質問してみよう