Documentation Center

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));
	}
}