Tengo una tabla de base de datos, como a continuación:Cómo insertar de 20 millones de registro en la base de datos MySql lo más rápido posible
create table temperature
(id int unsigned not null auto_increment primary key,
temperature double
);
Y en mi programa tengo alrededor de 20 millones de temperatura para insertar en la tabla. Trabajo en entorno .Net, uso Connector/Net conectando a MySql. El código era el siguiente:
List<double> temps = new List<double>();
...
string connStr = "server=localhost;user=name;database=test;port=3306;password=*****;";
MySqlConnection conn = new MySqlConnection(connStr);
try
{
conn.Open();
//temps.Count is about 20 million
for (int i = 0; i < temps.Count; i++)
{
string sql1 = "INSERT INTO temperature VALUES (null, "+temps[i]+")";
MySqlCommand cmd1 = new MySqlCommand(sql1, conn);
cmd1.ExecuteNonQuery();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
¿Cómo puedo insertar tantas líneas de datos lo más rápido posible? (Sólo se puede insertar 2000 registros cada minuto en mi ordenador.)
Tengo curiosidad. ¿Por qué insertaría 20 millones de temperaturas en una base de datos? –
¿Necesita autoincrement? Tengo una situación similar (en el servidor sql) y administro el lado del cliente de las teclas de incremento en el cargador. Manejo 75,000 filas por segundo en mi hardware actual. Sin SQL, sin embargo ... – TomTom
También su sql "apesta";) ¿no puede enviar múltiples instrucciones de inserción en una sola ejecución? Es una cadena - ¿Puede manejar eso? 10 isnerts por viaje redondo es 10% de los viajes de ida y vuelta. Las roscas agregan más a eso (carga de múltiples roscas). – TomTom