1つのフォルダの中に、100個のテキストファイルがあります。
file1.txt
file2.txt
file3.txt・・
これを、結合してCSVにしたいのです。
↓こんな感じに。
file1 txtの中身
file2 txtの中身
file3 txtの中身
file4 txtの中身
ちなみに、これをMySQLの中に入れるのがゴールです。
まずはCSV化するところまでの手順をお教え頂ければ幸いです。
よろしくおねがいします!
まず、どのような環境化で実現したいのか、
それを明記していただけないと
目的の回答は得られないように思います。
また、MySQLに登録するまで全自動でやらせたいのか、
(毎日のバッチ処理等でやらせたいのか)
CSVにする箇所、MySQLへの登録箇所等で人手を介しても良いのか
によって、実装方法も変わると思います。
それと、「txtの中身」とありますが、これは1行限定なのでしょうか?
複数行考えられるなら、1カラム目(ファイル名)はどうするのか、
その辺も限定される方がいいかと思います。
仮にWindows環境として、人手を介していいなら、
私ならExeclVBAでCSV出力マクロ作成することで、
実装します。
URLダミー
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110.html
windowsの場合。
1.一つのフォルダにテキストファイル100個を入れた状態。
2.テキストエディタを開いて「copy *.txt zenbu.txt」と記入して保存。
3.ファイル名は任意でいいので、拡張子を.batにする。
4.できたファイルをダブルクリック。
5.zenbu.txtというフォルダが新たにできる。
6.開くとそのフォルダ内のテキストが全部入ってる。
もし改行が入ってなくて長いデータになってしまったらこちらを参考に
http://www.mag2qa.com/qa464709.html
ありがとうございます。
でもこれは、マージしているだけでは?
こんなのでどうでしょうか?
Option Explicit Dim strPath, objShell, objFolder, objItem Dim objFSO, objSTM, strName, strText strPath = "C:\TEMP" Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.Namespace(strPath) If Not objFolder Is Nothing Then For Each objItem in objFolder.Items() strName = objItem.Name If Not objItem.IsFolder And LCase(Right(strName, 4)) = ".txt" Then Set objFSO = CreateObject("Scripting.FileSystemObject") Set objSTM = objFSO.OpenTextFile(strPath & "\" & objItem.Name, 1) strText = objSTM.ReadAll strText = Replace(strText, vbCr, "") strText = Replace(strText, vbLf, "") WScript.Echo(strName & " " & strText) Call objSTM.Close() Set objSTM = Nothing Set objFSO = Nothing End If Next End If Set objFolder = Nothing Set objShell = Nothing
コメント欄に頂いた追記を含めてお返事です。
修正して頂いたものでちゃんと動作しています。ありがとうございます。
できれば、echoじゃなくてcsvで書き出すところまでして頂けると嬉しいです。
vbsあまり分からないので。。。。。。。すいません。出来ればで結構です。
ありがとうございます。
CSVまでで結構です。Windows環境で、1回こっきりの作業です。
txtの中身は、各ファイルともに100行程度です。
VBAやVBSであれば、丁度良いサンプルコードをご呈示頂けますと助かります。
引き続きよろしく御願いします。