repetidos - El INFILLO DE DATOS DE CARGA MYSQL ignora filas duplicadas(autoincremento como clave principal)
eliminar registros duplicados en base de datos (3)
Cree un índice ÚNICO en la columna de edad, luego:
LOAD DATA INFILE ''member.csv''
IGNORE INTO TABLE tbl_member
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
ESCAPED BY ''"''
LINES TERMINATED BY ''/n''
(name, age);
Me encontré con algunos problemas al usar el comando LOAD DATA INFILE ya que quería ignorar las líneas que ya estaban en la base de datos. Por ejemplo, si tengo una tabla con la siguiente información,
id |name |age
--------------------
1 |aaaa |22
2 |bbbb |21
3 |bbaa |20
4 |abbb |22
5 |aacc |22
Donde id es el valor de incremento automático. y el archivo csv que tengo contiene datos de la siguiente manera,
"cccc","14"
"ssee","33"
"dddd","22"
"aaaa","22"
"abbb","22"
"dhgg","34"
"aacc","22"
Quiero ignorar las filas,
"aaaa","22"
"abbb","22"
"aacc","22"
y subir el resto a la mesa. y la consulta que tengo que carga todo en la tabla es la siguiente,
LOAD DATA INFILE ''member.csv''
INTO TABLE tbl_member
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
ESCAPED BY ''"''
LINES TERMINATED BY ''/n''
(name, age);
Por favor, ayúdeme en esta tarea ... Será muy apreciado ... probé muchos enlaces pero no ayudé :(
Puede crear un índice único en varias columnas. LOAD DATA no insertará filas que coincidan con las filas existentes en todas esas columnas.
por ejemplo, ALTER TABLE tbl_member ADD UNIQUE unique_index (nombre, edad)
Un enfoque es utilizar una tabla temporal. Sube a esto y usa SQL para actualizar tbl_member de la tabla temporal.
INSERT INTO tbl_member
SELECT Field1,Field2,Field3,...
FROM temp_table
WHERE NOT EXISTS(SELECT *
FROM tbl_member
WHERE (temp_table.Field1=tbl_member.Field1 and
temp_table.Field2=tbl_member.Field2...etc.)
)