¿Cómo puedo usar FluentFile en Rhino DSL ETL?
Pregunta
He estado jugando con la biblioteca ETL Rhino y me gusta mucho la dirección que se dirige. Sin embargo, he encontrado que la parte mala de esto es la documentación es escasa y no parece ser lo suficientemente buena información sobre cómo crear estos procesos de tuberías y en especial el uso de la DSL.
Estoy intentando crear un archivo de DSL para cargar un archivo y exportar los datos a otro archivo para ver cómo todo esto podría encajar. Lo que tengo hasta ahora es la siguiente.
[DelimitedRecord("\t")]
class User:
public Name as string
public Phone as string
public Email as string
operation import_file:
file = Rhino.Etl.Core.Files.FluentFile(typeof(User)).From("""E:\Fake\Book1.txt""")
for row in file:
yield Row.FromObject(row)
operation export_file:
file = Rhino.Etl.Core.Files.FluentFile(typeof(User)).To("""E:\Fake\Test.txt""")
for row in rows:
record = User(Name: row["Name"])
file.Write(record)
process ImportFile:
import_file()
export_file()
Se lanza esta excepción
File.boo (1,2): BCE0064: Boo.Lang.Compiler.CompilerError: se ha encontrado ningún atributo con el nombre 'DelimitedRecord' o 'DelimitedRecordAttribute' (nombres de atributo son mayúsculas y minúsculas). Quiso decir 'System.Diagnostics.DelimitedListTraceListener'?
Si quito la parte atributo consigo este error
Excepción: No se pudo crear IMPORTFILE tubería: El usuario de la clase debe estar marcado con el [DelimitedRecord] Atributo o [FixedLengthRecord]. Excepción: No se ha podido ejecutar la operación File.import_file: El usuario de la clase debe estar marcado con el [DelimitedRecord] o [FixedLengthRecord] Atributo
.Todas las ideas aquí? O hay algún ejemplo de cómo utilizar el FluentFile dentro de un DSL para Rhino ETL?
Solución
El DelimitedRecordAttribute está en el FileHelpers montaje, FileHelpers espacio de nombres.