es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Valores con salto de línea dentro de los datos entre comillas en formato CSV.

Esta pregunta es específica para el lector CSV de ChoETL.

Toma este ejemplo:

csv
“Header1″,”Header2″,”Header3”
“Value1″,”Val
ue2″,”Value3”

(Captura de pantalla de Notepad++)

Todos los encabezados y valores están entre comillas.
Hay un salto de línea en “Value2”.

He estado probando opciones de ChoETL, pero no puedo hacer que funcione:

foreach (dynamic e in new ChoCSVReader(@"test.csv")
    .WithFirstLineHeader()
    .MayContainEOLInData(true)
    .MayHaveQuotedFields()
    //he estado probando con estas opciones también
    //.QuoteAllFields()
    // .ConfigureHeader(c => c.IgnoreColumnsWithEmptyHeader = true)
    //.AutoIncrementDuplicateColumnNames()
    //.ConfigureHeader(c => c.QuoteAllHeaders = true)
    //.IgnoreEmptyLine()
    )
{
    System.Console.WriteLine(e["Header1"]);
}

Esto falla con:

Missing ‘Header2’ field value in CSV file

El error varía según la configuración del lector.

¿Cuál es la configuración correcta para leer este texto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para leer correctamente este archivo CSV usando ChoETL, se necesita la siguiente configuración:

    foreach (dynamic e in new
        ChoCSVReader(@"test.csv")
            .WithFirstLineHeader()
            .MayContainEOLInData(true)
            .MayHaveQuotedFields()
            .Configure(c => c.IgnoreBlankLine = true)
            .Configure(c => c.ThrowAndStopOnMissingField = false)
            .ConfigureHeader(c => c.TrimHeaders = true)
            .ConfigureRecordConfiguration(c => c.AllowNewLineInEnclosedFieldValues = true)
    )
    {
        System.Console.WriteLine(e["Header1"]);
    }
    

    Explicación de las opciones de configuración:

    • WithFirstLineHeader() especifica que la primera línea del archivo CSV debe tratarse como encabezados de columnas.
    • MayContainEOLInData(true) permite que haya saltos de línea dentro de un valor de campo.
    • MayHaveQuotedFields() especifica que los campos pueden estar encerrados entre comillas.
    • IgnoreBlankLine se utiliza para ignorar las líneas en blanco en el archivo CSV.
    • ThrowAndStopOnMissingField se establece en false para permitir columnas faltantes en el archivo CSV.
    • TrimHeaders se utiliza para eliminar los espacios en blanco de los encabezados.
    • AllowNewLineInEnclosedFieldValues se utiliza para especificar que los campos encerrados pueden contener saltos de línea.

Comments are closed.