Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

184
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!