'変数宣言
Dim FileNameCsv As String()
Dim csvFileName As String = Nothing
Dim Writer As System.IO.TextWriter
Dim dbSTA As CommonOrcl.DBAccess
Dim swText As FileIO.TextFieldParser = Nothing
'対象のファイルを読取り、データベースへ書込み
'DB接続(DB)
dbSTA = New CommonOrcl.DBAccess("DB")
'トランザクション開始
dbSTA.BeginTrans()
'INフォルダに格納さている全ファイルを対象に処理を実行する
FileNameCsv = System.IO.
Directory.GetFiles(_In_Dir, "*.CSV")
'取得したCSVファイルの数処理(Length - 1)
For i As Integer = 0 To FileNameCsv.Length - 1
'変数CsvNameにCsvNameのファイル名代入
Dim CsvName As String =
System.IO.Path.GetFileName
(FileNameCsv(i).ToString)
'INフォルダにあるCSV名+処理開始をログ記載
' YYYY/MM/DD hh:nn:ss *****.csv,処理開始
Writer.WriteLine
(DateTime.Now.ToString("G")
& "," & CsvName.ToString & ",処理開始")
'INフォルダにあるCSVのデータをDBへ書込み
'読み込み結果用の配列を定義
Dim arrCsvData As New
System.Collections.ArrayList()
'CSVファイル名を設定
csvFileName = FileNameCsv(i).ToString
'Shift JISで読み込みます。
swText = New FileIO.TextFieldParser
(csvFileName, System.Text.Encoding.
GetEncoding("Shift_JIS"))
'フィールドが文字で区切られている設定を行います。
'(初期値がDelimited)
swText.TextFieldType =
FileIO.FieldType.Delimited
'区切り文字を「,(カンマ)」に設定
swText.Delimiters = New String() {","}
'フィールドを"で囲み、改行文字、区切り文字を
含めることが 'できるかを設定(初期値がtrue)
swText.HasFieldsEnclosedInQuotes = True
'フィールドの前後からスペースを削除する設定を行います。
'(初期値がtrue)
swText.TrimWhiteSpace = True
'1行ずつ処理(最後の行まで処理が終わったら抜ける)
While Not swText.EndOfData
'CSVファイルのフィールドを読み込みます。
Dim fields As String()
= swText.ReadFields()
'ダブルクォーテーションのを削除
_str = String.Join(",", fields)
'配列に追加
arrCsvData.Add(fields)
'データ更新(str_UpdateでSQL実行)
'SQLがFalseで帰ってきた場合以下処理
If Not str_Update() Then
'Try〜Catch間から強制的にCatchへ飛ばす
Throw New Exception
End If
End While
'ログへ書込み
Writer.WriteLine(DateTime.Now.ToString("G")
& "," & CsvName.ToString & ",正常終了")
'ファイルを解放
swText.Close()
swText = Nothing
'書込み終了後、CSVファイルを\BKUPに移行
System.IO.File.Move(FileNameCsv(i).ToString,
_Bkup_Dir & "\" & CsvName.ToString)
Next
'トランザクション終了
dbSTA.Commit()