Как загрузить данные из файла без повторения записей

0

У меня есть текстовый файл, который содержит поля, разделенные запятыми. Записи в файле могут быть продублированы. Однако, когда я вставляю их в базу данных, я хочу вставить первое вхождение записи и игнорировать любые повторяющиеся (на основе значения первого поля, которое должно быть уникальным).

Вот мое утверждение, которое вызывает ошибки из-за повторяющихся значений первого поля, которое я отмечаю как уникальное.

LOAD DATA LOCAL INFILE '/var/lib/mysql-files/myfile.txt'
INTO TABLE 'scheme'.'mytable' fields terminated BY ',';
Теги:
database
mysql-workbench
relational-database

2 ответа

0
Лучший ответ

Это оказалось легко. Просто используйте IGNORE и MySQL будет игнорировать повторное появление.

LOAD DATA INFILE '/var/lib/mysql-files/myfile.txt'
IGNORE INTO TABLE 'scheme'.'mytable' fields terminated BY ',';

Тем не менее, это будет игнорировать все остальные ошибки. Так что следует использовать с осторожностью.

0

Вы можете использовать loaddata для загрузки строки в таблицу 'temp', затем

INSERT INTO targetTable (firstField, ...set of columns...)  
  SELECT DISTINCT firstField, ...set of columns... 
    FROM temp 
    WHERE firstField NOT IN (SELECT firstField FROM target);

Для этого необходимо: firstField → набор столбцов (функциональная зависимость)

Или вы можете использовать INSERT with IGNORE (без ошибок при дублировании):

INSERT IGNORE INTO targetTable (firstField, ...set of columns...)
 SELECT DISTINCT firstField, ...set of columns... 
    FROM temp;

или как схемы таблиц одинаковы:

INSERT IGNORE INTO targetTable 
   SELECT * 
    FROM temp;
  • 0
    Благодарю. Даже не игнорируя. Все будет вставлено правильно и дублировать не будет. По некоторым причинам, я думал, что вся вставка не была сделана из-за ошибок, поскольку я использовал для сброса всех данных, если я обнаружил какую-либо ошибку.
  • 0
    Таким образом, вы можете получить дубликаты в вашей целевой таблице, INSERT + SELECT DISTINCT удалит только дубликаты (DISTINCT) из временной таблицы.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню