Seguimos con mas de programación en C# y ahora les traigo un ejemplo de importación de datos en CSV a la base de datos MySQL.

Para los que no esten familiarizados CSV significa (Comma Separated Values o Valores separados por coma).

Ojo, necesitas leer  CRUD con C# y MySQL para continuar.

Los archivos CSV se usan principalmente para almacenar datos en un formato u orden establecido para despues ser importado, es muy general que muchos sistemas tengan opciones de importar y exportar datos en CSV.

En este ejemplo usaremos un archivo CSV con 5 campos  el orden es: Nombre, Apellido, Direccion, Telefono, Email, y en cada linea debe haber una entrada, asi el archivo puede tener 10,100, 1000, etc, lineas que son registros en la base de datos.

En el ejemplo que les traigo ahora vamos a importar datos en CSV a la base de datos que creamos en el post “CRUD con C# y MySQL”.

Código y Explicación

En la vista principal en el archivo Form1.cs vamos a agregar un boton que hara la funcion de importar, y en el evento click del boton pegamos o escribimos este código mágico.


OpenFileDialog d = new OpenFileDialog();
d.Title = "Importar archivo (.txt, .csv)";
d.Filter = "Txt|*.txt";
if (d.ShowDialog() == DialogResult.OK)
{
/// Console.WriteLine(d.FileName);

try
{
String[] lines = File.ReadAllLines(d.FileName);
MySqlConnection con = Db.con();
con.Open();
for (int i = 0; i < lines.Length; i++)
{
if (lines[i] != "")
{
String[] l = lines[i].Split(',');
if (l.Length == 5)
{
MySqlCommand cmd = con.CreateCommand();
cmd.CommandText = "INSERT INTO contact (name,lastname,address,phone,email,created_at) value ";
cmd.CommandText += "(\"" + l[0] + "\",\"" + l[1] + "\",\"" + l[2] + "\",\"" + l[3] + "\",\"" + l[4] + "\",NOW())";
cmd.ExecuteNonQuery();
}
}
}
con.Close();
load_dgv_contacts(dataGridView1);

} catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

No olvidemos agregar “using System.IO;”.

Para este ejemplo hacemos uso del componente OpenFileDialog, que sirve para abrir la clásica ventana para seleccionar un archivo, y si seleccionamos un archivo y presionamos OK al dialogo o ventana nos devuelve la ruta o path del archivo que seleccionamos, osea d.FileName.

Despues usamos String[] lines = File.ReadAllLines(d.FileName) para leer el archivo y guardar las lineas en un array que luego recorreremos con un for.

Si el valor de la linea no es vació, procedemos a dividir cada linea con String[] l = lines[i].Split(‘,’);

Es decir cada linea contiene datos separados por comas, al usar la funcion split separaremos cada dato y lo guardaremos temporalmente en la variable array l, la cual tendrá el formato:

  • 0: nombre
  • 1: apellido
  • 2: direccion
  • 3: telefono
  • 4: email

Si todo es correcto se ejecutan las opciones para guardar los datos de cada linea en la base de datos.

Al final de haber guardado todos los datos se cierra la conexion y se ejecuta el metodo load_dgv_contacts(dataGridView1) para recargar el DataGridView principal.

Descargar

Finalizando

Ya para terminar les invito a:

  • Suscribirse a mi sitio web para recibir notificaciones cuando publique cosas nuevas
  • Seguirme en Twitter como @evilnapsis
  • Suscribirse a mi canal de youtube https://youtube.com/evilnapsis
  • Enviarme una donacion para apoyar mi blog 🙂