Test Foro de elhacker.net SMF 2.1

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