Как избежать дублирования данных при использовании LOAD DATA INFILE

Это продолжение по моей другой ссылке вопроса.

У меня есть такая табличная структура:

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 ответ

  1. Определите подходящий ключ UNIQUE в таблице:

    ALTER TABLE my_table ADD UNIQUE KEY (receiver_no)
  2. Добавьте IGNORE (чтобы сохранить существующие данные) или REPLACE (чтобы удалить запись и заменить ее новыми данными) после имени файла в команду LOAD DATA INFILE.

licensed under cc by-sa 3.0 with attribution.