Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

232
Vistas
Equivalente de PostgreSQL de la inserción masiva de Oracle

Intentando volver a implementar esta inserción masiva de Oracle en el equivalente de postgres.

Actualmente tiene:

 a.each do |b| params << [nil, b.value] inserts << %{INSERT INTO table(a, b, c, d) VALUES (:a1, :a2, :a3, :a4); } end sql = inserts.join ActiveRecord::Base.transaction do # insert ActiveRecord::Base.connection.exec_update(sql, 'table', params) end

¿Cómo sería una implementación similar usando activerecord/postgres?

Estoy recibiendo el siguiente error

 ActiveRecord::StatementInvalid: # ERROR: syntax error at or near ":" # LINE 4: VALUES (:a1, :a2, :a3, :a4, :a5, :a6, :a7, :... # ^
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Postgresql usa la sintaxis $1 , $2 , etc. para marcadores de posición de parámetros. Reemplace Oracle :a1 , :a2 , ... con $1 , $2 , ...

SQL tiene un concepto de declaraciones preparadas, en el que proporciona la declaración con marcadores de posición en lugar de valores reales. Luego puede ejecutar la declaración una o más veces proporcionando los parámetros cada vez. Esto es más eficiente porque el servidor solo tiene que analizar, analizar y planificar su consulta una vez.

En respuesta a su comentario, parece que está preparando una cadena que contiene varias INSERT concatenadas. En su lugar, debe preparar solo una INSERT y luego ejecutarla varias veces, una para cada fila de parámetros.

Desafortunadamente, no sé lo suficiente sobre ActiveRecord o incluso Ruby para poder sugerir cómo reescribir su código para lograrlo.

Por cierto, esto no es lo que yo llamaría un 'inserto masivo'. La forma más rápida de obtener datos en postgresql suele ser a través del comando COPY .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda