我正在尝试使用导入向导上传CSV文件/插入大量记录。总之,我想保留最新记录,以防万一找到重复记录。重复记录是名字,姓氏和标题的组合
例如,如果我的CSV文件如下所示:
James,Wistler,34岁,纽约,已婚
詹姆斯,Wistler,34,伦敦,已婚
....
....
James,Wistler,34岁,纽约,离婚
这应该只保留在我的组织中: James,Wistler,34岁,纽约,离婚
我一直在尝试在更新/插入之前编写一个触发器,但到目前为止没有成功这是我的触发器代码:(代码尚未完成(仅使用Firstname进行文件保存),我在删除找到的副本时出现问题我的CSV)任何提示。谢谢你的阅读!
trigger CheckDuplicateInsert on Customer__c(before insert,before update){
Map <String, Customer__c> customerFirstName = new Map<String,Customer__c>();
list <Customer__c> CustomerList = Trigger.new;
for (Customer__c newCustomer : CustomerList)
{
if ((newCustomer.First_Name__c != null) && System.Trigger.isInsert )
{
if (customerFirstName.containsKey(newCustomer.First_Name__c) )
//remove the duplicate from the map
customerFirstName.remove(newCustomer.First_Name__c);
//end of the if clause
// add this stage we dont have any duplicate, so lets add a new customer
customerFirstName.put(newCustomer.First_Name__c , newCustomer);
}
else if ((System.Trigger.oldMap.get(newCustomer.id)!= null)&&newCustomer.First_Name__c !=System.Trigger.oldMap.get(newCustomer.id).First_Name__c )
{//field is being updated, lets mark it with UPDATED for tracking
newCustomer.First_Name__c=newCustomer.First_Name__c+'UPDATED';
customerFirstName.put(newCustomer.First_Name__c , newCustomer);
}
}
for (Customer__c customer : [SELECT First_Name__c FROM Customer__c WHERE First_Name__c IN :customerFirstName.KeySet()])
{
if (customer.First_Name__c!=null)
{
Customer__c newCustomer=customerFirstName.get(customer.First_Name__c);
newCustomer.First_Name__c=Customer.First_Name__c+'EXIST_DB';
}
}
}
答案 0 :(得分:0)
纯粹的非SF解决方案是对它们进行排序&amp;例如,在Excel中进行重复数据删除;)
好消息 - 你不需要触发器。坏消息 - 您可能不得不放弃导入向导并开始使用Data Loader。解决方案很长,看起来很可怕但是一旦掌握了它,它应该开始变得更有意义,并且在将来比编写代码更容易维护。
您可以在制作组织的设置区域下载数据加载器,这里有一些basic info about the tool。
反正。
ISBLANK(Unique_key__c) || ISCHANGED(FirstName) || ISCHANGED(LastName) || ISCHANGED(Title)
Title + FirstName + ' ' + LastName
x = 7;
和x = 5;
一样保存到DB)并且将决定使这些行失败。因此,您可能需要在Data Loader的设置中调整批处理中的记录数量。