filas ¿Cómo inserto seleccionado de table_source
a table_target
utilizando SQL en MySQL donde:INSERT INTO ... SELECT sin detallar todas las columnas
- Ambas tablas tienen el mismo esquema
- Todas las columnas deben transferir a excepción de el incremento automático
id
- Sin escribir de forma explícita todos los nombres de columna, ya que sería tedioso
el trivial INSERT INTO table_target SELECT * FROM table_source
falla en las entradas duplicadas para la clave principal.
Estás bien, al final utilicé la sintaxis explícita. Para completar: obtenga fácilmente la lista de columnas usando ['DESCRIBE'] (http://dev.mysql.com/doc/refman/5.0/en/describe.html) y luego use la sintaxis' INSERT INTO table1 (field1, field2 , campo3) SELECCIONE table2.field1, table2.field2, table2.field3 FROM table2; ' – Jonathan
La forma más fácil de obtener los nombres de los campos csv: ' SELECCIONE CONCAT (GROUP_CONCAT (COLUMN_NAME SEPARATOR ','), "\ n") FROM INFORMATION_SCHEMA .COLUMNAS DONDE TABLE_SCHEMA = 'dbname' Y TABLE_NAME = 'tablename' GRUPO POR TABLE_NAME' – Hafenkranich