使用LOAD DATA INFILE时如何避免重复数据

时间:2014-05-10 10:55:12

标签: php mysql csv

这是我的另一个问题link的延续。

我有一个像这样的表结构:

id
assigned_by
assigned_to_user_id
vendor_id
receiver_no
purchase_order_no
destination
po_status
invoice_no
invoice_amount
delivery_date
datetime_done
latest_jda_sync_date
latest_mobile_sync_date
created_at
updated_at
deleted_at

我的csv文件的内容是这样的:

vendor_id receiver_no purchase_order_no destination po_status
30105   20110   10151   9005    3
50015   20114   10155   9005    3

我的问题是我有一个轮询/守护进程,它会拉取数据并将它们插入到csv文件中。所以我肯定知道我每个csv都会获得重复数据。我想避免这种情况。

我读过使用IGNORE可以在我的数据插入之前进行此验证,但我的问题是我的主要密钥不是' id'我在csv文件中提取和存储的内容没有字段' id'在里面。

我的csv中的唯一字段是' receiver_no'或者' purchase_order_no'。那么如何将IGNORE命令设置为po_no或receiver_no。这可能吗?

感谢,

1 个答案:

答案 0 :(得分:0)

  1. 在表格中定义合适的UNIQUE键:

    ALTER TABLE my_table ADD UNIQUE KEY (receiver_no)
    
  2. IGNORE命令的文件名后添加REPLACE(以保留现有数据)或LOAD DATA INFILE(删除记录并替换为新数据)。