¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como lidar com uma barra diagonal em um nome de coluna ao carregar dados CSV com NodeJs e CAP

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 0 Vistas
0
Cargando...

Olá,

temos uma entidade em nosso modelo de cds que contém uma barra diagonal '/' em um nome de coluna. No passado, isso foi resolvido no compilador para lidar com isso, mas agora está causando problemas ao carregar dados através de um arquivo csv ao executar o servidor com 'cds watch'. Estamos usando a versão NodeJs do CAP.

O erro é: [ERROR] SQLITE_ERROR: perto de "/": erro de sintaxe

Abaixo (uma versão simplificada) o modelo e o csv, e também algumas coisas que já tentei.

Esperançosamente, alguém tem uma ideia de como resolver isso.

Saudações Ramon

ps : Eu tive o mesmo problema antes ao usar a variante JAVA do CAP e pude resolver sobrescrevendo a classe com.sap.cds.impl.sql. InsertStatementBuilder e adicionando aspas duplas ao redor dos nomes das colunas


exemplo simplificado do modelo

entidade![TEST]{    
chave  ![id]       : String(3);       
     ![nome]     : String(50);       
     ![/abc/def] : String(12);       
     ![cidade]     : String(50);
}

arquivo csv:

id;nome;/abc/def;cidade
1;John;zzz;Nova Iorque
2;Pete;yyy;Paris

Coisas que tentei:

1) colocar aspas simples/duplas ao redor do nome da coluna no csv.

2) criar um 'Select as' acima da entidade TEST e dar ao nome da coluna com barra diagonal um alias assim:

entidade![TEST_1] como select from [TEST]{    
 chave![id]       : String(3);       
    ![nome]     : String(50);       
    ![/abc/def] : String(12) como abc_def;       
    ![cidade]     : String(50);
}

com csv:

id;nome;abc_def;cidade
1;John;zzz;Nova Iorque
2;Pete;yyy;Paris
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá Gregor,

Não tenho certeza de 100% do que você quer dizer, mas em nossa aplicação cap temos sinônimos dessas tabelas SAP (é uma cópia somente leitura das tabelas SAP usando SLT) e geramos as entidades para ela com "hana-cli inspectTable [schema] [table/view_name] -o cds"

Ainda tem o / nome da coluna, dar um alias para o nome da coluna também não ajuda.

Outra opção teria sido renomear a coluna no processo SLT, mas atualmente isso está fora de questão ¯\_(?)_/¯

Saudações cordiais

Ramon

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Ramón,

Qual tecnologia você usa para replicação de dados? Se for OData, os campos com espaço de nomes personalizado (/ABC/) são substituídos por minúsculas x. Assim, /ABC/ se torna xABCx.

Cumprimentos
Gregor

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá gregorw Não sou fã dessas barras inclinadas para a frente também, mas elas estão nas tabelas principais do SAP, como uma extensão conforme entendi corretamente de um dos nossos rapazes do SAP.

E usá-las nos modelos CDS funciona bem, isso foi corrigido há alguns meses, mas também quero usá-las em meus cenários de teste, por isso preciso ser capaz de preencher essas tabelas.

Por enquanto tenho uma solução alternativa usando um init.js (desculpe pelo design do trecho de código, não consigo dar um formato bonito aqui)

Saudações Ramon

module.exports = (db) => {return db.run([INSERT.into('TEST').columns('id',                'name',                '"/abc/def"',                'city').rows(                ['1', 'John', 'zzz', 'Nova York'],                ['2', 'Pete', 'yyy', 'Paris']            )    ]);};
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Você pode explicar por que precisa da barra diagonal em seus atributos? Só posso esperar coisas negativas ao usar a API OData com tais atributos.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?