Programa de busqueda con archivo csv

Iniciado por cefagure, 11 Marzo 2015, 04:37 AM

0 Miembros y 1 Visitante están viendo este tema.

cefagure

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

Eleкtro

#1
Cita de: cefagure en 11 Marzo 2015, 04:37 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:
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 (vbnet) [Seleccionar]
       Using csvParser As New TextFieldParser("Archivo.csv") With { .Delimiters = {","} }

           ' Asigno los nombres de los campos/columnas.
           Dim fieldNames As List(Of String) = csvParser.ReadFields().ToList

           ' Asigno el índice del campo/columna a parsear.
           Dim fieldIndex As Integer = fieldNames.FindIndex(Function(name As String)
                                                                Return name.Equals("IDREG", StringComparison.OrdinalIgnoreCase)
                                                            End Function)

           ' Itero las lineas del csv y muestro el campo que hace referencia al índice fieldIndex .
           Do Until csvParser.EndOfData
               Debug.WriteLine(csvParser.ReadFields(fieldIndex))
           Loop

       End Using


Saludos