¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo manejar una barra diagonal en un nombre de columna al cargar datos CSV con NodeJs y CAP

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

Hi,

tenemos una entidad en nuestro modelo de cds que contiene una barra diagonal '/' en un nombre de columna. En el pasado esto se solucionó en el compilador para poder manejarlo, pero ahora está causando problemas al cargar datos a través de un archivo csv al ejecutar el servidor con 'cds watch'. Estamos utilizando la versión de NodeJs de CAP.

El error es: [ERROR] SQLITE_ERROR: cerca de "/": error de sintaxis

A continuación (una versión simplificada de) el modelo y el csv, y también algunas cosas que ya intenté.

Con suerte alguien tiene una idea de cómo solucionar esto.

Saludos Ramon

ps : Tuve el mismo problema antes al usar la variante JAVA de CAP y pude solucionarlo sobrescribiendo la clase com.sap.cds.impl.sql. InsertStatementBuilder y agregando comillas dobles alrededor de los nombres de columna


ejemplo simplificado del modelo

entidad![TEST]{    
clave  ![id]       : Cadena(3);       
     ![nombre]     : Cadena(50);       
     ![/abc/def] : Cadena(12);       
     ![ciudad]     : Cadena(50);
}

archivo csv:

id;nombre;/abc/def;ciudad
1;John;zzz;Nueva York
2;Pete;yyy;París

Cosas que intenté:

1) poner comillas simples/dobles alrededor del nombre de la columna en el csv.

2) crear un 'Select as' encima de la entidad TEST y darle al nombre de la columna con barra diagonal un alias así:

entidad![TEST_1] como select from [TEST]{    
 clave![id]       : Cadena(3);       
    ![nombre]     : Cadena(50);       
    ![/abc/def] : Cadena(12) como abc_def;       
    ![ciudad]     : Cadena(50);
}

con csv:

id;nombre;abc_def;ciudad
1;John;zzz;Nueva York
2;Pete;yyy;París
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Gregor,

No estoy 100% seguro de lo que quieres decir, pero en nuestra aplicación cap tenemos sinónimos de esas tablas SAP (es una copia de solo lectura de las tablas SAP utilizando SLT) y generamos las entidades para ella con "hana-cli inspectTable [schema] [table/view_name] -o cds"

Aún tiene el / nombre de columna, darle un alias al nombre de columna tampoco ayuda.

Otra opción habría sido renombrar la columna en el proceso SLT, pero actualmente eso está fuera de discusión ¯\_(ツ)_/¯

Saludos cordiales

Ramon

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

Hola Ramón,

¿Qué tecnología utilizas para la replicación de datos? Si es OData, los campos con el espacio de nombres personalizado (/ABC/) se reemplazan por minúsculas x. Entonces /ABC/ se convierte en xABCx.

Saludos cordiales
Gregor

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

Hola gregorw No soy fan de esas barras inclinadas hacia adelante tampoco, pero están en las tablas principales de SAP, como alguna extensión según entendí correctamente de uno de nuestros chicos de SAP.

Y usarlas en los modelos CDS funciona bien, esto se arregló hace algunos meses, pero también quiero usarlas en mis escenarios de prueba por eso necesito poder llenar esas tablas.

Por ahora tengo una solución alternativa usando un init.js (perdón por el diseño del fragmento de código, no puedo darle un formato bonito aquí)

Saludos Ramon

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

¿Puedes explicar por qué necesitas la barra diagonal en tus atributos? Solo puedo esperar que ocurran cosas negativas al usar API de OData con tales 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?