Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: cefagure en 11 Marzo 2015, 04:37 am



Título: Programa de busqueda con archivo csv
Publicado por: cefagure en 11 Marzo 2015, 04:37 am
El archivo tiene un formato CSV, es decir separado por comas, el primer registro es la cabecera. El programa debe pemitir realizar la búsqueda por los campos IDREG y FUNC, ambos son tipo texto.

 el archivo del proyecto será mucho mayor (millones de registros).
Ayuda x favor no tengo idea de como hacerlo ....puede ser en culaquier lenguaje de programacion.
 :-( :D


Título: Re: Programa de busqueda con archivo csv
Publicado por: Eleкtro en 11 Marzo 2015, 08:24 am
....puede ser en culaquier lenguaje de programacion.

Aquí no se hacen tareas.

Cualquier lenguaje te sirve, simplemente tienes que declarar un tipo de Array/Colección, hacer un Split a la primera linea del CVS para obtener los nombres de los campos/columnas, y luego hacer lo mismo en el resto de lineas basándote en el índice del Array del nombre de campo a buscar.

Pseudo-código:
Código:
fieldNames[Array] = ["IDREG", "FUNC"] 
fieldIndex[Int32] = fieldNames.FindIndex("IDREG")

For each line[String] in csvText:
    fields[Array] = line.Split(",")
    print fields(fieldIndex)
End For

Si quieres algo muy fácil acorde con el tipo de pregunta que has hecho donde pareces mostrar poco interés por esforzarte, en C#/VB.Net puedes utilizar la Class Microsoft.VisualBasic.FileIO.TextFieldParser, que está diseñada para parsear un CSV sin complicaciones.

Ejemplo:
Código
  1.        Using csvParser As New TextFieldParser("Archivo.csv") With { .Delimiters = {","} }
  2.  
  3.            ' Asigno los nombres de los campos/columnas.
  4.            Dim fieldNames As List(Of String) = csvParser.ReadFields().ToList
  5.  
  6.            ' Asigno el índice del campo/columna a parsear.
  7.            Dim fieldIndex As Integer = fieldNames.FindIndex(Function(name As String)
  8.                                                                 Return name.Equals("IDREG", StringComparison.OrdinalIgnoreCase)
  9.                                                             End Function)
  10.  
  11.            ' Itero las lineas del csv y muestro el campo que hace referencia al índice fieldIndex .
  12.            Do Until csvParser.EndOfData
  13.                Debug.WriteLine(csvParser.ReadFields(fieldIndex))
  14.            Loop
  15.  
  16.        End Using
  17.  

Saludos