/// <summary> /// /// </summary> /// <param name="changeLogs"></param> /// <param name="writer"></param> internal void deleteSnapshotTable(List <ChangeLogItem> changeLogs) { const int commitPeriod = 100; int recCount = 0; List <string> deletableSnapshotIDs = new List <string>(); SnapShotDataReader reader = new SnapShotDataReader(this.fromConnStr); reader.openConnection(); Console.Write("delete table for t_snapshot"); foreach (var cl in changeLogs) { if (recCount >= commitPeriod) { // 読み込み元のDBから、リスト内で指定したIDのレコードを物理削除する reader.deleteSnapShotTableBySnapShotIds(deletableSnapshotIDs); deletableSnapshotIDs.Clear(); recCount = 0; } deletableSnapshotIDs.Add(cl.snapshotId); recCount++; } if (recCount > 0) { // 読み込み元のDBから、リスト内で指定したIDのレコードを物理削除する reader.deleteSnapShotTableBySnapShotIds(deletableSnapshotIDs); //writer.commitTransaction(); } Console.WriteLine(); }
public List <ChangeLogItem> transAuditLogToChangeLog(string outputDir) { List <ChangeLogItem> changeLogs = new List <ChangeLogItem>(); Console.WriteLine("{0} start read SnapShot data", DateTime.Now.ToString()); // t_snapshot テーブルを読んでその中身をAuditLogItemリストに格納 SnapShotDataReader reader = new SnapShotDataReader(this.fromConnStr); List <AuditLogItem> logItems = reader.readSnapshotData(); // logItemsが空ならコンソールに出力して終了 if (logItems == null) { Console.WriteLine("対象のSnapShotデータがありませんでした"); return(changeLogs); } Console.WriteLine("{0} SnapShot data record count: {1}", DateTime.Now.ToString(), logItems.Count); // reader.openConnection(); StreamWriter sw = null; try { //BOM無しのUTF8でテキストファイルを作成する sw = new StreamWriter(outputDir + "\\changeLogs.txt"); sw.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\" ?> "); sw.WriteLine(""); for (int i = 0; i < logItems.Count; i++) { AuditLogItem aItem = logItems[i]; // このレコードが転送対象かを判断 if (isTransferable(aItem)) { Console.WriteLine("row: [ SnapshotID={0}, SeriesID={1}, SnapshotName={2}, Position={3} ]", aItem.snapshotId, aItem.seriesId, aItem.snapshotName, aItem.position); ChangeLogItem chItem = transToChangeLog(aItem); sw.WriteLine("--------------------------------------------------------------------------------"); sw.WriteLine("SnapshotId:" + chItem.snapshotId); sw.WriteLine("seriesId:" + chItem.seriesId); sw.WriteLine("notes:" + chItem.notes); sw.WriteLine("changeType:" + chItem.changeType); sw.WriteLine("changeItemName:" + chItem.changeItemName); sw.WriteLine("elementGuid:" + chItem.elementGuid); sw.WriteLine("metadata:" + chItem.metadata); sw.WriteLine("logItem:" + chItem.logItem); sw.WriteLine("changeUser:"******"changeDateTime:" + chItem.changeDateTime); // 作成したChangeLogの情報をリストに保管 changeLogs.Add(chItem); } else { Console.WriteLine("row: [SnapshotID={0}] can not acceptable for ChangeLog", aItem.snapshotId); } } } catch (Exception ex) { Console.WriteLine("----------------------------------------------"); Console.WriteLine(ex.Message); } finally { if (sw != null) { sw.Close(); } reader.closeConnection(); } return(changeLogs); }