Importing Keywords using the API example
Tridion.AudienceManagement.API.Import contains classes that enable bulk import of Keywords on the Content Manager Server. Importing Keywords using the API.
// Create import manager and load the import definition for the import file.
ImportManager manager = new ImportManager(UserContext);
ImportDefinition definition = manager.GetImportDefinition("1000 Keywords.csv", ImportType.ImportKeywords);
/* Default import settings
definition.ColumnDelimiter = ColumnDelimiter.Comma;
definition.DateTimeFormat = "yyyy-MM-dd'T'HH:mm:ss";
definition.DecimalCharacter = ".";
definition.ErrorFile = "oe_import.err";
definition.LogFile = "oe_import.log";
definition.GroupSeparator = ",";
definition.TextQualifier = "\"";
definition.ImportActions = ImportActions.CreateNewKeywords | ImportActions.OverwriteKeywordsOnContacts;
definition.RowsToImport = 1000;
*/
// Auto match the import file (Matches fields from the import file with equally named database fields).
definition.MatchImportFile();
// Manually match other fields, first the identification fields:
definition.Mappings["identification_key"].SourceField = definition.SourceFields["key"];
definition.Mappings["identification_source"].DestinationField.DefaultValue = "Import";
definition.Mappings["publication_title"].DestinationField.DefaultValue = Publications.CmDutchPublication.Title;
definition.Mappings["category_title"].SourceField = definition.SourceFields["category"];
definition.Mappings["keyword_title"].SourceField = definition.SourceFields["keyword"];
// Hook into the feedback event
manager.Progress += ImportProgress;
ImportResult results = manager.ImportKeywords(definition);
Console.WriteLine(results.AllDataImported ? "All Keywords were successfully imported" : string.Format(CultureInfo.InvariantCulture, "Keywords were imported, but some errors occurred, please check the {0} and {1} log files", definition.ErrorFile, definition.LogFile));
Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Created {0} new Keywords.", results.KeywordsCreated));
Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Associated {0} Keywords with its Contact.", results.KeywordsAssociated));
// Example of implementing the Import feedback:
static void ImportProgress(object sender, ImportEventArgs e)
{
if (e.Progress > 0)
{
Console.WriteLine(string.Format("({0}: {1} rows copied)", e.Description, e.Progress));
}
else
{
Console.WriteLine(string.Format("{0}{1}:{2}{3}", e.ImportStep, e.Description, DateTime.Now.ToString("s"), e.Starting ? " (starting)" : string.Empty));
}
}