Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
problema de inserción de datos de variante de copo de nieve: 'problema de nivel experto'

Tengo una mesa en copo de nieve y la estructura de la mesa es como la de abajo.

Datos identificación marca de tiempo
tipo de variante varchar varchar

Estoy insertando estos datos en la tabla.

 let data = { "a":"hi", "b":"i'm the problem" } let id = "id"; let timestamp = "2022-06-29 20:30:44" let data1 = JSON.stringify(data); let data2 = data1.replace(/\'/g, "\\'");

mi consulta de inserción es

`insertar en xyz (datos,id,marca de tiempo) seleccionar parse_json('${datos}'),'${id}','${marca de tiempo}' `

cuando estoy ejecutando la consulta está dando un error. Error de compilación SQL:\nerror de sintaxis línea 2 en la posición 378 inesperado ''\"

el registro que no tiene una comilla simple se inserta correctamente. pero el campo de datos con un valor de comillas simples está dando el error como se mencionó anteriormente. He intentado muchas cosas. Por favor recomiende.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Como no vemos todo el procedimiento, creé uno basado en su pregunta:

 create or replace table xyz (data variant, id varchar, timestamp varchar ); create or replace procedure test_xyz() returns varchar LANGUAGE JAVASCRIPT as $$ let data = { "a":"hi", "b":"i'm the problem" } let id = "id"; let timestamp = "2022-06-29 20:30:44" let data1 = JSON.stringify(data); let data2 = data1.replace(/\'/g, "\\'"); snowflake.createStatement( { sqlText: ` insert into xyz (Data,id,timestamp) select parse_json('${data2}'),'${id}','${timestamp}' ` } ).execute(); $$ ;

Como puede ver, usé ${data2} y funcionó:

 call test_xyz(); select * from xyz; +----------------------------------------+----+---------------------+ | DATA | ID | TIMESTAMP | +----------------------------------------+----+---------------------+ | { "a": "hi", "b": "i'm the problem" } | id | 2022-06-29 20:30:44 | +----------------------------------------+----+---------------------+
about 4 years ago · Juan Pablo Isaza Relatório

0

Esta función de ayuda de Javascript escapará una cadena para usar como un literal entre comillas simples en una declaración de inserción. Solo debe usarse en situaciones en las que las variables de vinculación no se pueden usar por algún motivo.

 function escapeInsertString(value) { var s = value.replace(/\\/g, "\\\\"); s = s.replace(/'/g, "''" ); s = s.replace(/"/g, '\\"'); return s; }

Puedes cambiar esta línea:

 let data2 = data1.replace(/\'/g, "\\'");

A esto:

 let data2 = escapeInsertString(data1);

Con la función auxiliar agregada al código SP o Node.js, esto funcionará.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda