From 59cd1d0566ad6000d5c8395eb80407c740c6b3ec Mon Sep 17 00:00:00 2001 From: YPermitin Date: Tue, 26 Jan 2021 22:08:36 +0500 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B4=D0=B0=D0=BF=D1=82=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=B4=20=D0=BD=D0=BE=D0=B2=D1=83?= =?UTF-8?q?=D1=8E=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8E=20ClickHouse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Адаптация кода под новую версию ClickHouse - Обновлены служебные библиотеки тестирования --- .../ClickHouseContext.cs | 104 +++++------------- ...chJournalExportAssistant.ClickHouse.csproj | 2 +- ...YY.TechJournalExportAssistant.Tests.csproj | 2 +- 3 files changed, 27 insertions(+), 81 deletions(-) diff --git a/Libs/YY.TechJournalExportAssistant.ClickHouse/ClickHouseContext.cs b/Libs/YY.TechJournalExportAssistant.ClickHouse/ClickHouseContext.cs index 6bdfc6d..01ae8e1 100644 --- a/Libs/YY.TechJournalExportAssistant.ClickHouse/ClickHouseContext.cs +++ b/Libs/YY.TechJournalExportAssistant.ClickHouse/ClickHouseContext.cs @@ -226,86 +226,32 @@ namespace YY.TechJournalExportAssistant.ClickHouse } public void SaveLogPosition(TechJournalLogBase techJournalLog, FileInfo logFileInfo, TechJournalPosition position) { - var commandAddLogInfo = _connection.CreateCommand(); - commandAddLogInfo.CommandText = - @"INSERT INTO LogFiles ( - TechJournalLog, - DirectoryName, - Id, - FileName, - CreateDate, - ModificationDate, - LastEventNumber, - LastCurrentFileData, - LastStreamPosition - ) VALUES ( - {isId:String}, - {directoryName:String}, - {newId:Int64}, - {FileName:String}, - {CreateDate:DateTime}, - {ModificationDate:DateTime}, - {LastEventNumber:Int64}, - {LastCurrentFileData:String}, - {LastStreamPosition:Int64} - )"; + using (ClickHouseBulkCopy bulkCopyInterface = new ClickHouseBulkCopy(_connection) + { + DestinationTableName = "LogFiles", + BatchSize = 100000 + }) + { + long logFileNewId = GetLogFileInfoNewId(techJournalLog); + IEnumerable values = new List() + { + new object[] + { + techJournalLog.DirectoryName, + techJournalLog.Name, + logFileNewId, + logFileInfo.Name, + logFileInfo.CreationTimeUtc, + logFileInfo.LastWriteTimeUtc, + position.EventNumber, + position.CurrentFileData.Replace("\\", "\\\\"), + position.StreamPosition ?? 0 + } + }.AsEnumerable(); - commandAddLogInfo.Parameters.Add(new ClickHouseDbParameter - { - ParameterName = "directoryName", - DbType = DbType.Int64, - Value = techJournalLog.DirectoryName - }); - commandAddLogInfo.Parameters.Add(new ClickHouseDbParameter - { - ParameterName = "isId", - DbType = DbType.Int64, - Value = techJournalLog.Name - }); - commandAddLogInfo.Parameters.Add(new ClickHouseDbParameter - { - ParameterName = "newId", - DbType = DbType.Int64, - Value = GetLogFileInfoNewId(techJournalLog) - }); - commandAddLogInfo.Parameters.Add(new ClickHouseDbParameter - { - ParameterName = "FileName", - DbType = DbType.AnsiString, - Value = logFileInfo.Name - }); - commandAddLogInfo.Parameters.Add(new ClickHouseDbParameter - { - ParameterName = "CreateDate", - DbType = DbType.DateTime, - Value = logFileInfo.CreationTimeUtc - }); - commandAddLogInfo.Parameters.Add(new ClickHouseDbParameter - { - ParameterName = "ModificationDate", - DbType = DbType.DateTime, - Value = logFileInfo.LastWriteTimeUtc - }); - commandAddLogInfo.Parameters.Add(new ClickHouseDbParameter - { - ParameterName = "LastEventNumber", - DbType = DbType.Int64, - Value = position.EventNumber - }); - commandAddLogInfo.Parameters.Add(new ClickHouseDbParameter - { - ParameterName = "LastCurrentFileData", - DbType = DbType.AnsiString, - Value = position.CurrentFileData.Replace("\\", "\\\\") - }); - commandAddLogInfo.Parameters.Add(new ClickHouseDbParameter - { - ParameterName = "LastStreamPosition", - DbType = DbType.Int64, - Value = position.StreamPosition ?? 0 - }); - - commandAddLogInfo.ExecuteNonQuery(); + var bulkResult = bulkCopyInterface.WriteToServerAsync(values); + bulkResult.Wait(); + } } public long GetLogFileInfoNewId(TechJournalLogBase techJournalLog) { diff --git a/Libs/YY.TechJournalExportAssistant.ClickHouse/YY.TechJournalExportAssistant.ClickHouse.csproj b/Libs/YY.TechJournalExportAssistant.ClickHouse/YY.TechJournalExportAssistant.ClickHouse.csproj index 03f23fa..1b79455 100644 --- a/Libs/YY.TechJournalExportAssistant.ClickHouse/YY.TechJournalExportAssistant.ClickHouse.csproj +++ b/Libs/YY.TechJournalExportAssistant.ClickHouse/YY.TechJournalExportAssistant.ClickHouse.csproj @@ -3,7 +3,7 @@ netstandard2.1 true - 1.0.0.5 + 1.0.0.6 Permitin Yuriy Technological journal's export assistant to ClickHouse Library for exporting 1C:Enterprise 8.x platform's technological journal files to ClickHouse diff --git a/Tests/YY.TechJournalExportAssistant.Tests/YY.TechJournalExportAssistant.Tests.csproj b/Tests/YY.TechJournalExportAssistant.Tests/YY.TechJournalExportAssistant.Tests.csproj index c65fd03..46f150e 100644 --- a/Tests/YY.TechJournalExportAssistant.Tests/YY.TechJournalExportAssistant.Tests.csproj +++ b/Tests/YY.TechJournalExportAssistant.Tests/YY.TechJournalExportAssistant.Tests.csproj @@ -13,7 +13,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all