La BD que estoy utilizando es MySql (phpAdmin) y como lenguaje de programación es C# en aplicativo Windows Forms.
Les pondre un pequeño codigo donde leo el archivo .txt y tomar los datos e ir insertándolos en el datagridview
Código Javascript:
Ver original
List<string> listaExisten = new List<string>();
listaExisten.Clear();
List<string> FormatoErrorList = new List<string>();
FormatoErrorList.Clear();
// Minimum indica el valor mínimo de la barra.
progressBarRegistros.Minimum = 0;
// Maximum indica el valor máximo de la barra.
progressBarRegistros.Maximum = Countveri;
// Value indica desde donde se va a comenzar a llenar la barra, la nuestra iniciara desde cero.
progressBarRegistros.Value = 0;
// Step indica el paso de la barra, entre más pequeño sea la barra tardará más en cargar.
progressBarRegistros.Step = 1;
// Iniciar el Label en vacio.
this.labelNumeroProgreso.Text = string.Empty;
try
{
StreamReader tr = new StreamReader(this.textBoxDireccionArchivo.Text, Encoding.Default);
int oCount = 0;
int oContador = 0;
while ((TextoPlano = tr.ReadLine()) != null)
{
split = TextoPlano.Split(new Char[] { ',' }, count);
if (split.Length == count)
{
Regex oRegex0 = new Regex(@"^([0-9]*)$");
Match oMatch0 = oRegex0.Match(split[0]);
// Aquí hay mas validaciones con expresiones regulares etc...
DsTadable = cDsAdministrador.ConsultaAfiliado(split[5]);
if (DsTadable.Tables[0].Rows.Count == 0)
{
if (oMatch0.Success && oMatch1.Success && etc....)
{
dataGridGestionArchivo.Rows.Add(split[0], split[1], etc.....);
oContador++;
}
else
{
string Fila = "fila[" + Convert.ToString(oCount) + "]";
FormatoErrorList.Add(Fila);
}
}
else
{
string FilaExiste = "fila[" + Convert.ToString(oCount) + "] - " + split[5] + " - " + split[6] + " - " + split[8];
listaExisten.Add(FilaExiste);
}
}
split = null;
oCount++;
// Esta instrucción avanza la posición actual de la barra.
progressBarRegistros.PerformStep();
// Updates the label to show available drive space.
this.labelNumeroProgreso.Text = oContador + " Registros Procesados de " + progressBarRegistros.Value;
}
}
catch (Exception ex)
{
//
}
Y este es cuando tomo los datos de el datagridview para la BD:
Código Javascript:
Ver original
listError.Clear();
// Minimum indica el valor mínimo de la barra.
progressBarRegistros.Minimum = 0;
// Maximum indica el valor máximo de la barra.
progressBarRegistros.Maximum = this.dataGridGestionArchivo.RowCount;
// Value indica desde donde se va a comenzar a llenar la barra, la nuestra iniciara desde cero.
progressBarRegistros.Value = 0;
// Step indica el paso de la barra, entre más pequeño sea la barra tardará más en cargar.
progressBarRegistros.Step = 1;
// Iniciar el Label en vacio.
this.labelNumeroProgreso.Text = string.Empty;
if (ValorCheck == "MSVAL")
{
int Count = 0;
while (this.dataGridGestionArchivo.Rows.Count != 0)
{
int i = 0;
foreach (DataGridViewRow Row in dataGridGestionArchivo.Rows)
{
string CodFormUSER = GetRandomNumbers(5);
string CodEpsUSER = Convert.ToString(Row.Cells["Entidad"].Value);
string TipoDocUSER = Convert.ToString(Row.Cells["TipoDoc"].Value);
string IdentificacionUSER = Convert.ToString(Row.Cells["Identificacion"].Value);
// etc.....
CAddUSER oCAddUSER = new CAddUSER(CodFormUSER, CodEpsUSER, TipoDocUSER, IdentificacionUSER, etc.......);
CAdministrador oCAdministradorUSER = new CAdministrador();
if (oCAdministradorUSER.RegistrarUSER(oCAddUSER) == true)
{
this.dataGridGestionArchivo.Rows.RemoveAt(i);
Count++;
}
else
{
string CadenaText = CodEpsUSER + "," + TipoDocUSER + "," + IdentificacionUSER + "," + etc.....;
listError.Add(CadenaText);
this.dataGridGestionArchivo.Rows.RemoveAt(i);
}
i++;
// Esta instrucción avanza la posición actual de la barra.
progressBarRegistros.PerformStep();
// Updates the label to show available drive space.
this.labelNumeroProgreso.Text = Count + " Registros Ingresados a la Base de Datos de " + progressBarRegistros.Value;
}
}
}
else
}
// etc........
}
Pues yo se que con 1.000 filas el proceso se demorara pero no abra una forma de optimizar estos dos procesos para que sea un poco mas rápido ?
 
 

 Como optimizar el registro y carga de datos masivos desde archivo TXT a la BD (C#) ?
 Como optimizar el registro y carga de datos masivos desde archivo TXT a la BD (C#) ? 


