protected virtual void LookupIds(BulkLoadContext loadContext, BulkLoadSqlContext sqlContext, BulkItemsAndFieldsReader itemAndFieldReader) { var lookupBlobsSql = sqlContext.GetEmbeddedSql(loadContext, "Sql.02.LookupBlobs.sql"); var lookupItemsSql = sqlContext.GetEmbeddedSql(loadContext, "Sql.03.LookupItems.sql"); var stopwatch = Stopwatch.StartNew(); if (loadContext.LookupBlobIds) { sqlContext.ExecuteSql(lookupBlobsSql); } if (loadContext.LookupItemIds) { // Using sql parameters resets temp tables. if (loadContext.Destination != null) { lookupItemsSql = sqlContext.ReplaceOneLineSqlStringParameter(lookupItemsSql, "@destinationPath", loadContext.Destination.ItemPath); lookupItemsSql = sqlContext.ReplaceOneLineSqlStringParameter(lookupItemsSql, "@destinationId", loadContext.Destination.ItemId.ToString("D")); } sqlContext.ExecuteSql(lookupItemsSql); } loadContext.Log.Info($"Looked up ids: {(int)stopwatch.Elapsed.TotalSeconds}s"); }
protected virtual void MergeData(BulkLoadContext loadContext, BulkLoadSqlContext sqlContext, BulkItemsAndFieldsReader itemAndFieldReader) { var sql = sqlContext.GetEmbeddedSql(loadContext, "Sql.08.MergeTempData.sql"); var stopwatch = Stopwatch.StartNew(); // Execute merge and collect imported items. // Using sql parameters resets temp tables. sql = sqlContext.ReplaceOneLineSqlBitParameter(sql, "@ProcessDependingFields", itemAndFieldReader.HasFieldDependencies); sql = sqlContext.ReplaceOneLineSqlBitParameter(sql, "@CleanupBlobs", itemAndFieldReader.HasBlobFields); sql = sqlContext.ReplaceOneLineSqlBitParameter(sql, "@AllowTemplateChanges", loadContext.AllowTemplateChanges); sql = sqlContext.ReplaceOneLineSqlStringParameter(sql, "@DefaultLanguage", LanguageManager.DefaultLanguage.Name); using (var cmd = sqlContext.NewSqlCommand(sql)) { cmd.CommandTimeout = int.MaxValue; using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { loadContext.ItemChanges.AddLast(new ItemChange(reader)); } } } loadContext.Log.Info($"Merged loaded data: {(int)stopwatch.Elapsed.TotalSeconds}s"); }