Ver Mensaje Individual
  #1  
Antiguo 26-03-2015
ronimaxh ronimaxh is offline
Miembro
 
Registrado: jun 2003
Ubicación: Rep. Dominicana
Posts: 307
Reputación: 21
ronimaxh Va por buen camino
Question Insercción masiva tarda mucho....

Saludos amigos del club, uso firebird 2.5 y C# estoy haciendo una inserción masiva desde un archivo plano txt que contiene 2.7 millones de registro le inserto 4 campos y tarde 5 horas de la forma que lo hago:

Código:
//leeo el archivo:
  if (open.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string nombre = open.FileName;
                StreamReader Lector = new StreamReader(nombre);
                string Linea = Lector.ReadLine();
                char[] Delimitador = { '|' };
                Int32 CantLineas = File.ReadAllLines(nombre).Length;
                progressBar1.Maximum = CantLineas;
                progressBar1.Minimum = 0;
                progressBar1.Value = 0;
                detener = false;
                CargarRNC carga = new CargarRNC();
               // carga.BorrarCargaRNC();
                int i = 0;
                while (Linea != null)
                {

                    string[] Campos = Linea.Split(Delimitador);
                    carga.Rnc = Campos[0];
                    carga.Cliente = Utilidades.LimpiarCadena(Campos[1]);
                    carga.Usuarioid = 0;
                    carga.FechaSist = Utilidades.ObtenerFechaHoraSist();
                   //llamo un metodo insertar por linea
                    Int32 aff = carga.GuardaCargaRNC(carga);
                    Linea = Lector.ReadLine();
                    progressBar1.Increment(+1);
                    progressBar1.Refresh();
                    i++;
                  
                }
                Lector.Close();
                MessageBox.Show("Preceso Terminado Satisfactoriamente", "Atencion", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
Código:
 //llamo un metodo insertar por linea
 public Int32 GuardaCargaRNC (CargarRNC Carga)
        {
            string sqltxt = "insert into TB_CARGARNC (rnc,cliente,usuarioid,fechasist)values(" + "'" + Carga.Rnc + "'" + "," + "'" + Carga.Cliente + "'" + "," + Convert.ToString(Carga.Usuarioid) + "," + "'" + Carga.FechaSist + "'" + ")";
            FbConnection conn = ConectarFirebirdDB.ObtenerConexion();
            FbTransaction trans = conn.BeginTransaction();
            FbCommand cmd = new FbCommand(sqltxt, conn, trans);
            Int32 aff = 0;
            try
            {
                aff = cmd.ExecuteNonQuery();
                trans.Commit();
               
            }
            catch (Exception ex)
            {
                trans.Rollback();
                
            }
            conn.Close();
            cmd.Dispose();
            return aff;

        }
__________________
ronimaxh
Rep. Dominicana
Responder Con Cita