
以下の解決方法をご教授願えませんでしょうか。
宜しくお願いいたします。
前提:ギガバイト単位のテキストファイル(サーバのログファイル)を扱うスクリプトを作成したい。
必須機能:grep機能、動作が軽快で早い事
また、できるだけ外部ツールを使用したくない事(サーバ上に載せる事も視野に入る為)
私が行った事:
1. まずテキストファイルとしてgrepするスクリプトを作成。
方法(1) ReadLineで1行ずつ読み込み、正規表現にてマッチする行を変数に格納
その後、その変数をファイルに書き出ししてみた。
⇒処理速度が遅すぎて使い物にならない。
方法(2) &演算に処理を食い、速度が遅くなる為、一度ファイルを読み込み
正規表現にてマッチしない行を1度に削除し、新しいファイルに書き出してみた
⇒テストファイルだと狙った通りに処理がかなり早くなったが、実ファイルが
ギガバイト単位の為、メモリオーバーフローを起こし使い物にならない
(ま、そりゃそうだよねorz)
方法(3) &演算に処理を食うのは避けたい為、ReadLineにて行毎に読み込み、
正規表現にてマッチした行をWriteLineにてファイルに書き出し。
⇒(1)よりは早くなり、ひとまず完成。ただし、それでも処理が遅いのと
CPUパワーを使う為に処理中他の作業がし辛いのが問題。
2. そこで、1度捨てた(2)の方法を何とか使えないかと思案し、ファイルを
適当なサイズで分割する形にしようかと思い、以下の分割用スクリプトを作成
⇒でも、結局LoadFromFileにてメモリ上にファイルを展開する為、
メモリオーバーフローを起こす事に。
要は、c言語のfreadみたいな事ができれば解決できると思うのですが…
この方法に限らず、何かいい案があればアドバイスをお願いいたします。
以下、バイナリーにて分割するスクリプト
Option Explicit
Const FilePath = "分割対象ファイルパス"
Const ReadLen = 134217728
Dim bytData, intX
intX = 0
With CreateObject("ADODB.Stream")
.Open
.Type = 1
.LoadFromFile(FilePath)
.Position = 0
Do Until .EOS
bytData = .Read(ReadLen)
With CreateObject("ADODB.Stream")
.Open
.Type = 1
.Write(bytData)
.SaveToFile FilePath & "." & CStr(intX), 1
.Close
End With
intX = intX + 1
Loop
.Close
End With
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- CAD・DTP JWW-CADでDXF変換後の線が連動して消える 2 2023/01/13 11:09
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
このQ&Aを見た人はこんなQ&Aも見ています
-
Microsoft VBAで2GBを超えるファイルサイズのバイナリデータを読み込みたい。
Visual Basic(VBA)
-
エクセルVBA 大容量CSVファイルの読み込み
Visual Basic(VBA)
-
VBA 大きなtxtテキストファイルを開く方法
Excel(エクセル)
-
-
4
エクセルVBA 2千万行のCSVファイルを開きたい
Visual Basic(VBA)
-
5
エクセルVBA 大容量CSVファイルの読み込みが遅い
Visual Basic(VBA)
-
6
100万行のCSVを10万行ずつのファイルに区切るには?(UTF-8、改行LF)
Excel(エクセル)
-
7
ADODB.Streamで開いたファイルに追記する
その他(プログラミング・Web制作)
-
8
Excel VBS、ADODB.Streamで改行
Visual Basic(VBA)
-
9
(VBS) テキストファイル読込での改行コード
その他(プログラミング・Web制作)
-
10
VBSでソート&ファイル分割
その他(プログラミング・Web制作)
-
11
エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
グローバル変数のよくない使い...
-
CSVファイルへの保存の際、デー...
-
VBに、Cのincludeのようなもの...
-
最近使ったファイルからファイ...
-
ExcelVBA 定数宣言を外部ファイ...
-
csvファイルを開かずに文字を検...
-
ファイルの結合
-
Wordファイルの結合
-
simplexml_load_fileのタイムア...
-
COM相互運用機能のON,OFFによる...
-
ファイル読み書き方法について...
-
VBAにてEXCEL以外のファイル(テ...
-
バッチで118項目のCSVを処理し...
-
分割コンパイルの#defineについて
-
SGファイルって何ですか?
-
文書から任意の文字を抽出する...
-
fopenの"r+"モードで同時に読み...
-
VB.NETによるプロセス間通信
-
C言語でファイル内の一致検索
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
dataファイルをxtxファイルにす...
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
CSVファイルへの保存の際、デー...
-
グローバル変数のよくない使い...
-
バッチで118項目のCSVを処理し...
-
テキストファイルの最終行を削...
-
VBAにてEXCEL以外のファイル(テ...
-
VBに、Cのincludeのようなもの...
-
分割コンパイルの#defineについて
-
RPGでファイル名(もしくはレコ...
-
SGファイルって何ですか?
-
マウスポインタの変更
-
Excelマクロでの再読込み方法
-
【C#】リソースファイルの埋め...
-
ダイアログボックスで複数フォ...
-
C言語のfopenについて教えてく...
-
ドラッグアンドドロップでファ...
-
「VBScript」ADODB.Streamにお...
おすすめ情報