97 lines
3.9 KiB
C#
97 lines
3.9 KiB
C#
using KssSmaPlaLib.Commons;
|
|
using KssSmaPlaLib.IO.Database;
|
|
using KssSmaPlaLib.IO.File;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace KssSmaPlaLib.Exchange
|
|
{
|
|
public static class CsvDbSyncUxer
|
|
{
|
|
// public static bool InsertDbFromCsvFiles(
|
|
// DbUxer con,
|
|
// string csvFilePath,
|
|
// string dupCheckSql,
|
|
// string insertSqlName,
|
|
// out string resultMessage,
|
|
// EncodingUxer.EncodingType encodingType = EncodingUxer.EncodingType.Utf8WithoutBom)
|
|
// {
|
|
// var messageForMe = string.Empty;
|
|
|
|
// resultMessage = string.Empty;
|
|
|
|
// // CSV読み込み
|
|
// if (!CsvUxer.ImportFromCsv(csvFilePath, out var rs, out messageForMe, encodingType))
|
|
// {
|
|
// resultMessage = messageForMe;
|
|
// return false;
|
|
// }
|
|
|
|
// LoggerUxer.Info($"[CSV件数:{rs.Count}]");
|
|
|
|
// if (string.IsNullOrEmpty(dupCheckSql))
|
|
// {
|
|
// LoggerUxer.Info($"重複チェックSQLが未指定のため重複チェックは行いません。");
|
|
// }
|
|
// else
|
|
// {
|
|
// LoggerUxer.Info($"重複チェックを行います。[SQLファイル:{dupCheckSql}]");
|
|
// }
|
|
|
|
// foreach (var rec in rs)
|
|
// {
|
|
// var recObj = rec.ToDictionary(kvp => kvp.Key, kvp => (object)kvp.Value);
|
|
|
|
// if (!string.IsNullOrEmpty(dupCheckSql))
|
|
// {
|
|
// // 重複チェック
|
|
// if (!con.ExecuteQuery(dupCheckSql, recObj, out var dupRs, out messageForMe))
|
|
// {
|
|
// resultMessage = "重複チェックエラー:" + messageForMe;
|
|
// return false;
|
|
// }
|
|
// if (dupRs.Count != 1)
|
|
// {
|
|
// resultMessage = $"重複チェックで取得件数エラーです。[取得件数:{dupRs.Count}]";
|
|
// return false;
|
|
// }
|
|
// // ↓COUNT(*)の結果型はintにあらず(ポスグレの場合long)ゆえに文字列化してint化する
|
|
// if (!int.TryParse(dupRs[0].Values.ElementAt(0).ToString(), out var intCnt))
|
|
// {
|
|
// resultMessage = $"重複チェックで取得値(件数)が数値ではありません。[取得値:{dupRs[0].Values.ElementAt(0)}]";
|
|
// return false;
|
|
// }
|
|
// // 重複レコードありの場合、飛ばす
|
|
// if (intCnt > 0)
|
|
// {
|
|
// LoggerUxer.Info($"重複レコードのため、飛ばします。[該当件数:{intCnt}]");
|
|
// continue;
|
|
// }
|
|
// LoggerUxer.Info($"重複チェックにて重複レコードは見つかりませんでした。");
|
|
// }
|
|
|
|
// // DB挿入
|
|
// if (!string.IsNullOrEmpty(insertSqlName))
|
|
// {
|
|
// LoggerUxer.Info($"[DB挿入SQL名:{insertSqlName}]");
|
|
// if (!con.ExecuteNonQuery(insertSqlName, recObj, out var resultCount, out messageForMe))
|
|
// {
|
|
// resultMessage = messageForMe;
|
|
// return false;
|
|
// }
|
|
// LoggerUxer.Info($"[DB挿入件数:{resultCount}]");
|
|
// }
|
|
// else
|
|
// {
|
|
// LoggerUxer.Info($"DB挿入SQL名が未指定のためDB挿入は行いません。");
|
|
// }
|
|
// }
|
|
// return true;
|
|
// }
|
|
}
|
|
}
|