VB.NETでCSVファイルを1行ずつ取り込み、SQLの更新を行うプログラムを作成しております。
質問ですが、行ごとで複数項目の重複があった場合に、1行にまとめて更新を行うにはどのようにすればよいでしょうか。
例ですが、CSVファイルの中身は以下の通りです。
"1111","1","NO1","0001","0001","","","","101","","","10","","","","","","","","","20200801","",""
"2222","2","NO1","0001","0001","","","","101","","","14","","","","","","","","","20200802","",""
"3333","3","NO1","0001","0002","","","","101","","","12","","","","","","","","","20200802","",""
"4444","4","NO1","0002","0002","","","","101","","","15","","","","","","","","","20200802","",""
"5555","5","NO1","0002","0001","","","","101","","","11","","","","","","","","","20200802","",""
4項目目(1~3行目が”0001”の箇所)、5項目目(3,4行目が”0002”の箇所)、9項目目("101"の箇所)のすべてが重複する行があった場合、1行にまとめて更新を行いたいです。
尚、4,5項目目がキーでレコードの特定を行い、更新するのは12項目目("10""14""12""15""11"の箇所)です。
まとめる場合は、12項目目の値を加算して更新する想定です。
上記CSVファイルの場合だと、1行目と2行目は重複行なので、10+14=24で更新を行います。
3行目は重複していないので、12で更新を行います。
1項目のみの重複の場合でコードを作成しましたが、こちらのコードをもとに複数項目で同様に行うと
5行目がすべて重複していないのですが、他の行との組み合わせで重複しているので重複扱いになってしまいます。
VB.NET
1Dim ExDic As New Dictionary(Of String, ExInformation) 2Dim ImpList As New ExInformation 3 4If ExDic.ContainsKey(WkKey) Then 5 ExDic(WkKey) = ImpList 6 Else 7 ExDic.Add(WkKey, ImpList) 8 End If
※ExInformationは省略しますが、CSVファイルの各項目を格納しています。
WkKeyは格納されている項目の、重複チェックしたい項目が入っています。
既にSQLの更新等のプログラムは作成済みなので、重複行がまとまって
12項目目の値が加算される状態になれば完成となります。
追加修正等必要な場合はおっしゃってください。
断片的かつ説明下手で申し訳ありませんが、回答お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。