[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『巨大CSVファイルの読み込み方法(UTF-8BOM無)』(モゲラ)
Office365 32bitで10Gを超えるCSVファイルから指定の文字列を含む行の文字列を取得しようとしています エンコード方式がUTF-8なためADODB.Streamを使用してファイルを読み込もうと思いましたがメモリ不足でエラーとなってしまいます ファイルを分割する以外で何か良い方法はありませんか?
Set stm = CreateObject("ADODB.Stream") Public Sub OpenTextFile) Call OpenFile("c:\hoge\bigdata.csv", 2, "utf-8") End Sub Private Sub OpenFile(path As String, adType As Integer, Optional CharacterCode As Variant) If stm.State = 0 Then file_path = path With stm .Open .Type = adType If Not IsMissing(CharacterCode) Then .Charset = CharacterCode End If .LoadFromFile file_path '<-- ここでエラー End With Else Err.Raise 1001, "Open", "Opened File." End If End Sub
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
...だそうです。
(白茶) 2023/08/24(木) 14:56:02
Size プロパティ (ADO Stream) https://learn.microsoft.com/ja-jp/office/vba/access/concepts/miscellaneous/size-property-ado-stream
ストリームのSizeプロパティがLong型の時点で、 4Gbyte以上のファイルは無理なんじゃないかなぁと思います。
フィルタを掛けながら読み込むのであれば PowerQuery も使えます。Encodeも指定できます ですが、多分遅いです (´・ω・`) 2023/08/24(木) 15:44:00
そうですか 今CreateFile関数とReadFile関数を使用して読めないものか試行してますがこれダメだったらPowerShellでも叩いてみます (モゲラ) 2023/08/24(木) 15:51:13
EmEditor は、 Windows 用テキストエディター、コードエディター、CSVエディター、巨大ファイルエディターです
64 ビット版 EmEditor では、メモリが許す限り、
16 TB (17,592,186,044,415 バイト) または 1.09 兆行 (1,099,511,627,775 行) までのファイルを開けるようになりました。
以下参照
もう「Excel」はいらない?
最強CSVエディターと化した「EmEditor」を使いこなす
https://forest.watch.impress.co.jp/docs/special/1010667.html
(8月の蝉) 2023/08/24(木) 16:44:29
恒常的に取得したデータを更に加工したりいろいろしたりするものを作りたいので 外部から扱えない限り他のエディタを使用するのは手間がかかりそうなので選択肢としては薄いです(それならPowerShellで抽出したデータを作成するマクロ組むので・・・) (モゲラ) 2023/08/24(木) 16:55:43
214740001,2023 6 17,うどん,600,17,10200,35680
214740002,2023 6 17,ラーメン,800,47,37600,59600
214740003,2023 6 17,餃子,500,76,38000,38383
214740004,2023 6 17,ご飯,250,80,20000,58580
214740005,2023 6 17,そば,700,39,27300,29877
214740006,2023 6 17,そば,700,21,14700,29877
214740007,2023 6 17,餃子,500,65,32500,38383
214740008,2023 6 17,餃子,500,76,38000,38383
214740009,2023 6 17,餃子,500,75,37500,38383
214740010,2023 6 17,そば,700,29,20300,29877
214740011,2023 6 17,そば,700,38,26600,29877
な感じのcsv 約9.5ギガバイト[作るの大変でした、c#でdll作成、エクセルからの処理時間、5分]
を
Shellで1万行毎に分割してみました。^^;
そのぉ出来るのは出来ましたが2時間半ほどPC。。。うなっていました
(*^^*)
21476ファイル出来てました。。。ガ〜ン\(◎o◎)/!
win10 メモリー 8GB
でした。m(__)m
やりかたが、悪かったのだろうかしら。。。^^;
他に良い方法を発見されたのでしたら是非教えて下さいませ。^^
m(__)m
(隠居Z) 2023/08/27(日) 13:21:12
私は45行くらいを抽出して出力するだけでしたが5分もかからず終わりました CreateObject("WScript.Shell").Run "powershell -NoLogo -ExecutionPolicy RemoteSigned -Command " _ & "Get-Content -Encoding UTF8 'C:\temp\BigData.csv' | Select-String -pattern '.*hoge.*' | Set-Content 'c:\temp\result.csv'", 0, True
あとは出力されたデータを取得して加工して使っています (モゲラ) 2023/08/28(月) 14:32:53
パイプをつなぎ合わせて、. hoge. を含むものだけ抽出
されておられるのでせうか。
コードのご提示ありがとう御座います。折角ですので
再度テスト&研究を後学のため、頑張ってみます。
ありがとう御座いました。m(__)m
(隠居Z) 2023/08/28(月) 19:12:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.