? Necesito insertar varias filas en mi base de datos Mysql. Mis filas están disponibles en mi conjunto de datos.¿Es posible hacer una copia masiva en mysql
estoy usando para el lazo para enviar la fila de uno en uno es que camino correcto ...
? Necesito insertar varias filas en mi base de datos Mysql. Mis filas están disponibles en mi conjunto de datos.¿Es posible hacer una copia masiva en mysql
estoy usando para el lazo para enviar la fila de uno en uno es que camino correcto ...
Puede insertar varias filas utilizando una sola sentencia de SQL, así:?
INSERT INTO myTable (col1, col2, col3) VALUES ('myval1', 'myval2', 'myval3'), ('myotherval1', 'myotherval2', 'myotherval3'), ('anotherval1', 'anotherval2', 'anotherval3');
actualización :
MarkR tiene razón en su comentario - si usted está recogiendo datos de un usuario, o si buscas la recopilación de información, se puede construir la consulta de forma dinámica con algo como:
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("INSERT INTO myTable (col1, col2, col3) VALUES ");
for(int i=0;i<myDataCollection.Count;i++) {
stringBuilder.Append("(" + myDataCollection[i].Col1 + ", " + myDataCollection[i].Col2 + ", " + myDataCollection[i].Col3 + ")");
if (i<myDataCollection.Count-1) {
stringBuilder.Append(", ");
} else {
stringBuilder.Append(";");
}
}
string insertStatement = stringBuilder.ToString();
Dos puntos importantes a tener en cuenta:
Puede usar LOAD DATA INFILE (o LOAD DATA LOCAL INFILE) para cargar filas a granel en una tabla desde un archivo existente.
En el caso de LOAD DATA LOCAL, el archivo se transfiere del cliente al servidor y se inserta como un lote grande. Esto no está limitado por el tamaño máximo de paquete (como lo es un INSERT), pero todavía está limitado por la transacción máxima que puede retrotraer en innodb: todo va en una transacción, por lo que si es demasiado grande, excederá su retroceso espacio, y en cualquier caso, si revierte una transacción muy grande, lleva mucho tiempo e impacta el servidor.
Normalmente no es recomendable cargar más de unos pocos (decenas quizás, cientos posiblemente) megabytes de datos como una sola inserción o CARGAR DATOS. Si tienes más, puedes dividirlo.
eso es bueno ... estoy aprobando el valor de mi página aspx ... no estoy dando el valor directamente ... – TinTin
Puede construir la consulta programáticamente hasta el tamaño máximo de paquete (que está configurado en el servidor) – MarkR
MarkR tiene razón, mira mi actualización para más información ... – AlishahNovin