
100万行超のCSVがあります。
(ファイル形式はUTF-8、改行コードはLF)
1行目が項目名で、2行目以降がレコード、フッター行はありません。
各項目、データはダブルクォーテーションで囲まれたカンマ区切り形式です。
これを10万行ずつに区切りたいのですが一括でできる方法はないでしょうか。
各ファイル、項目名1行と10万レコードで100,001行で構成されます。
理想は、
ファイル名が、日付等の固定値+00001の連番です。
(例)2020031000001.csv
現在はテキストエディタ(秀丸)で、
1ファイル目:10万1行目以降を削除して保存
2ファイル目:10万行目までを削除し、10万1行目以降を削除して保存
・
・
こんな事を約10回繰り返していますが、途中で話しかけられたりして訳が分からなくなると、
やり直すハメに。。。
Excelで手作業でやらない理由は、CSV保存した際、ダブルクォーテーションが外れてしまう事と
文字コードをLFにし直さなければいけないからです。
正しく分割されてるなら、リネームや文字コード変換等を手作業で行う事になっても構いません。
Excelのマクロ、秀丸またはおすすめのテキストエディタのマクロ等でできる方法があったら教えてください。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
#3です。
取り敢えずと言う事でしょうか。ExcelVBAで処理するのは、どうでしょう?限界を感じますが、、
VBAからPowerShellを呼んでコマンドを送るなどにする場合、(コードはWebで)
直接やbatで操作した方が良いように思えますし、、
>保存後の改行コードがLFじゃなくなるので、これはテキストエディタで手修正です。
この部分は、CreateObject("ADODB.Stream") などで纏めて処理出来そうですが、、
(しっかりとした知識がある訳では無いです)いかがでしょう。
CSVの内容が分からず検証環境を作れないので、下記は参考になりますか?
http://excel.syogyoumujou.com/vba/replace.html
No.4
- 回答日時:
No.1 です。
splitに類するコマンド無いのか気になった検索してみたら、残念ながらWindowsにはなさそうですが、ただpowershell使うとできるっぽいですね。
↓こんな感じでしょうか。
$i=0; cat .\<ファイル名> -ReadCount 100000 | % { $_ > 2020031$i.csv;$i++ }
(参考:https://kbn48.com/technical/270)
ただ、私がWindows使いじゃないので上手くいくかは未検証です。
それと、ファイル名の命名規則の箇所をどうすれば希望の型式になるのかはちょっと分かりません。
ということで、ご参考までに。
ありがとうございます。
Powershellを使ったことがないので挑戦してみます。
今は近道のツールでしのぎたいと思いますが、
汎用性のある手法を整理しておきたいのでうまくいくか試してみます。
No.3
- 回答日時:
反しません。
解決が優先です。
リンク先バイナリをDLして試したら完璧じゃないですか!
ひとまず解決です、ありがとうございます。
ただし、改行コード指定がなく、保存後の改行コードがLFじゃなくなるので、これはテキストエディタで手修正です。
これは全然問題ありません。
VBAで実現出来たら一番理想なのですが。。。
No.2
- 回答日時:
VBAには、次のステートメントが用意されているのですが、
ご存知ないですか?
・Line Input # ステートメント
・Print # ステートメント
簡単なサンプルを書いてみました。
出力ファイルを100件毎に切り替えるようにすれば、
お望みの処理ができると思います。
Sub sample()
Dim TextLine
Open "C:\xxxxxx\データX.csv" For Input As #1
Open "C:\xxxxxx\データY.csv" For Output As #2
Do While Not EOF(1)
Line Input #1, TextLine
Print #2, TextLine
Loop
Close #1, #2
End Sub
これで10万件出力できるんですか?後で実験してみます。
でも文字コード、改行コードは元のがそのまま引き継がれるんですかね?それも確認します。
ありがとうございました。
No.1
- 回答日時:
WSLとかでLinuxコマンドが使えるのであれば、splitというツールでかんたんに出来ます。
↓こんな感じです。
$ split -l 100000 <ファイル名>
https://eng-entrance.com/linux-command-split
ありがとうございます。
手元のローカル環境がWindows10なので、もう少し敷居の低い手法だと助かります。
つまりそう簡単にはいかないって事なんですかねぇ。、、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【ExcelVBA】UTF-8の文字コードのまま指定行数毎にCSVを分割できませんか?
Visual Basic(VBA)
-
エクセルで20万行あるシートから100行ずつ抽出したいのですが
Excel(エクセル)
-
100万件越えCSVから条件を満たす行のみ抽出し、編集してエクセルシートに出力するには?
Ruby
-
-
4
エクセルVBA 2千万行のCSVファイルを開きたい
Visual Basic(VBA)
-
5
エクセルで50行ごとに区切ったデータをシートに分割したい
Excel(エクセル)
-
6
エディタで効率的な切り出し方法
その他(ソフトウェア)
-
7
Microsoft VBAで2GBを超えるファイルサイズのバイナリデータを読み込みたい。
Visual Basic(VBA)
-
8
VBA csvを100万行ずつ各シートに読み込み
Excel(エクセル)
-
9
Excelでファイル全体が読み込めないときどうすればいいでしょうか?
Excel(エクセル)
-
10
VBAでの100万行以上のデータの取り込み
その他(プログラミング・Web制作)
-
11
Excelで大量の2000個のリストを100個ずつ
Excel(エクセル)
-
12
【ExcelVBA】300万件越えCSVから条件を満たす行だけ抽出するには?
Visual Basic(VBA)
-
13
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
-
14
VBSでソート&ファイル分割
その他(プログラミング・Web制作)
-
15
エクセルVBA 大容量CSVファイルの読み込み
Visual Basic(VBA)
-
16
sqlで、600行あるテーブルを100行毎に分けてcsvファイルに書き出す方法を教えてください。
SQL Server
-
17
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
18
「VBScript」ADODB.Streamにおけるファイル読み込みについて(他
Microsoft ASP
-
19
1行ごとに取得して、その改行文字が何か知る方法
Visual Basic(VBA)
-
20
エクセルVBA 大容量CSVファイルの読み込みが遅い
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【CSVファイル】先頭の文字列に...
-
100万行のCSVを10万行ずつのフ...
-
ThunderbirdのメールをCSVでま...
-
タブ区切りデータからダブルコ...
-
アクセスでcsvに出力した際、頭...
-
SQL*Loaderの事で
-
TXTで作成したファイルをDATフ...
-
Access2007のエキスポートについて
-
OutlookからBecky!へ
-
txtをemlに変換したい!
-
【Excel】[Expression.Error] ...
-
SQLPLUSで結果を画面に表示しない
-
Batch: フォルダ内の特定のファ...
-
アクセスでエラー このフィー...
-
オラクル(PL/SQL)のエラー
-
Accessデータベースの最適化をE...
-
CMDとSQL
-
SQLserver2005 nvarchar を flo...
-
共有フォルダに誰が何にアクセ...
-
AccessからExcelのファイルを起...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
100万行のCSVを10万行ずつのフ...
-
【CSVファイル】先頭の文字列に...
-
Access インポート
-
アクセスでcsvに出力した際、頭...
-
ThunderbirdのメールをCSVでま...
-
csvファイルをアクセスにインポ...
-
タブ区切りデータからダブルコ...
-
Access2007のエキスポートについて
-
accessで項目内の文字を自動改...
-
カンマがデータとして入ってるC...
-
Access95のエクスポートで教え...
-
csvファイルが保存すると数...
-
sqlldrのフィールドの属性について
-
TXTで作成したファイルをDATフ...
-
DB2のエラーコードについて
-
ファイルメーカーVer6でのCSV書...
-
Accessでdatファイルのインポート
-
Gmailからウィルコムへの連絡先...
-
MS Accessでデータインポート前...
-
iTunes で管理している曲をリス...
おすすめ情報