Pergunta

Eu tenho jogado ao redor com a biblioteca ETL Rhino e realmente gosto da direção que ele está indo. No entanto, eu descobri que a parte ruim sobre ele é a documentação é escassa e há não parece ser uma informação boa o suficiente sobre como criar esses processos de dutos e, especialmente, usando o DSL.

Eu apenas estou tentando criar um arquivo de DSL para carregar um arquivo e exportar os dados em outro arquivo para ver como tudo isso poderia se encaixar. O que eu tenho até agora é este.

[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()

Ela lança esta exceção

File.boo (1,2): BCE0064: Boo.Lang.Compiler.CompilerError: Nenhum atributo com o nome 'DelimitedRecord' ou 'DelimitedRecordAttribute' foi encontrado (nomes de atributos são maiúsculas e minúsculas). Você quis dizer 'System.Diagnostics.DelimitedListTraceListener'?

Se eu remover a parte atributo eu recebo este erro

Excepção: Falha ao criar ImportFile gasoduto: O usuário classe deve ser marcada com o ou atributo [DelimitedRecord] [FixedLengthRecord]. Exceção: Falha ao executar a operação File.import_file:. O usuário classe deve ser marcada com o [DelimitedRecord] ou [FixedLengthRecord] Atributo

Todas as ideias aqui? Ou existem quaisquer exemplos de como usar o FluentFile dentro de uma DSL para Rhino ETL?

Foi útil?

Solução

O DelimitedRecordAttribute está no FileHelpers montagem, FileHelpers namespace.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top