fix_dedup
This commit is contained in:
parent
611c83304a
commit
3b1f94f287
80
deduplicate_customers.go
Normal file
80
deduplicate_customers.go
Normal file
@ -0,0 +1,80 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Customer struct {
|
||||
ID string `json:"id"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
CustomerName string `json:"customerName"`
|
||||
IntendedProduct string `json:"intendedProduct"`
|
||||
Version string `json:"version"`
|
||||
Description string `json:"description"`
|
||||
Solution string `json:"solution"`
|
||||
Type string `json:"type"`
|
||||
Module string `json:"module"`
|
||||
StatusProgress string `json:"statusProgress"`
|
||||
Reporter string `json:"reporter"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
// 读取客户数据
|
||||
data, err := os.ReadFile("data/customers.json")
|
||||
if err != nil {
|
||||
fmt.Printf("读取文件失败: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
var customers []Customer
|
||||
if err := json.Unmarshal(data, &customers); err != nil {
|
||||
fmt.Printf("解析JSON失败: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("原始记录数: %d\n", len(customers))
|
||||
|
||||
// 使用map来去重,保留每个客户名称最新的记录
|
||||
customerMap := make(map[string]Customer)
|
||||
|
||||
for _, customer := range customers {
|
||||
existing, exists := customerMap[customer.CustomerName]
|
||||
if !exists || customer.CreatedAt.After(existing.CreatedAt) {
|
||||
customerMap[customer.CustomerName] = customer
|
||||
}
|
||||
}
|
||||
|
||||
// 转换回切片
|
||||
deduplicatedCustomers := make([]Customer, 0, len(customerMap))
|
||||
for _, customer := range customerMap {
|
||||
deduplicatedCustomers = append(deduplicatedCustomers, customer)
|
||||
}
|
||||
|
||||
fmt.Printf("去重后记录数: %d\n", len(deduplicatedCustomers))
|
||||
fmt.Printf("删除了 %d 条重复记录\n", len(customers)-len(deduplicatedCustomers))
|
||||
|
||||
// 备份原文件
|
||||
backupFile := "data/customers.json.backup"
|
||||
if err := os.WriteFile(backupFile, data, 0644); err != nil {
|
||||
fmt.Printf("备份文件失败: %v\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("原文件已备份到: %s\n", backupFile)
|
||||
|
||||
// 写入去重后的数据
|
||||
outputData, err := json.MarshalIndent(deduplicatedCustomers, "", " ")
|
||||
if err != nil {
|
||||
fmt.Printf("生成JSON失败: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
if err := os.WriteFile("data/customers.json", outputData, 0644); err != nil {
|
||||
fmt.Printf("写入文件失败: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println("✅ 去重完成!")
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user