solo repetidos registros eliminar duplicados dejar datos buscar mysql csv load-data-infile

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.) )