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;
}