[OT] SQL para insertar multiples registros

22/01/2004 - 12:34 por Miguel González | Informe spam
Hay alguna forma en SQL para insertar multiples registros con una única sentencia sin utilizar un SELECT de otra tabla?

Me explico. Tendría que insertar X registros en una tabla de dos campos. En el primer campo siempre va el mismo valor, en el segundo el valor es variable. Los valores del segundo campo los tengo en un Array. Por ahora estoy ejecutando tantos "insert" como valores encuentre recorriendo con un "For" el Array, pero esta forma me lleva harto tiempo y me gustaría poder hacerlo "de golpe" con un solo "insert".

Es posible?

Saludos y Gracias!
Miguel

Preguntas similare

Leer las respuestas

#1 Jhonny Vargas P.
22/01/2004 - 13:31 | Informe spam
Hola Miguel,

Conozco dos formas, debe existir mucho más.

La primera es la utilización de Schemas, para esto debes construir un schema
(xml) con la estructura de la base de datos y con la estructura de un
documento xml donde tendrías la información, obviamente deberías construir
un xml con lo que quieres subir al servidor. Tambien esto funcionaría solo
con SQL Server 2000, los tiempos son muy buenos, solo un par de segundos en
subir una cantidad buena de registros (increíble).

La segunda es realizar varios insert seguidos en un string, y cada X insert
lo ejecutas, esto es muy rápido ya que te ejecuta de una sola vez una buena
cantidad de insert y no uno por uno.

ejemplo:
Sql = "Insert Into " & Chr(13)
Sql = Sql & "Insert Into " & Chr(13)
Sql = Sql & "Insert Into " & Chr(13)
...

Sql = Sql & "Insert Into " & Chr(13)

objCon.Execute Sql

Obviamente esto tendría que ir dentro de un ciclo.

Por otra parte te recomiendo consultar en el foro
microsoft.public.es.sqlserver para que ellos te den más alternativas.


Saludos,
Jhonny Vargas P. [MS-MVP]
Santiago de Chile
http://www.mvp.cl




"Miguel González" escribió en el mensaje
news:
Hay alguna forma en SQL para insertar multiples registros con una única
sentencia sin utilizar un SELECT de otra tabla?

Me explico. Tendría que insertar X registros en una tabla de dos campos. En
el primer campo siempre va el mismo valor, en el segundo el valor es
variable. Los valores del segundo campo los tengo en un Array. Por ahora
estoy ejecutando tantos "insert" como valores encuentre recorriendo con un
"For" el Array, pero esta forma me lleva harto tiempo y me gustaría poder
hacerlo "de golpe" con un solo "insert".

Es posible?

Saludos y Gracias!
Miguel
Respuesta Responder a este mensaje
#2 Miguel González
22/01/2004 - 15:40 | Informe spam
Gracias Jhonny... se me olvidó decir que la DB está en Access y el SQL Server queda de entrada descartado. No obstante, me parece interesante ahondar en tu primera propuesta, la de usar XML. El servidor web que alberga las páginas sí soporta el xmldom y lo utilizo sin problemas para menesteres similares, aunque me encuentro en la misma tesitura: me veo obligado a hacer tropecientos "inserts".

Así que, teniendo previamente el XML, ¿cómo podría realizarse la inserción?

En su dia intenté tratar el XML como un recordset directamente pero no me funcionaba (creo que por el ODBC del Access, pero no podría afirmarlo con seguridad)

Saludos!
Miguel


"Jhonny Vargas P." escribió en el mensaje news:
Hola Miguel,

Conozco dos formas, debe existir mucho más.

La primera es la utilización de Schemas, para esto debes construir un schema
(xml) con la estructura de la base de datos y con la estructura de un
documento xml donde tendrías la información, obviamente deberías construir
un xml con lo que quieres subir al servidor. Tambien esto funcionaría solo
con SQL Server 2000, los tiempos son muy buenos, solo un par de segundos en
subir una cantidad buena de registros (increíble).

La segunda es realizar varios insert seguidos en un string, y cada X insert
lo ejecutas, esto es muy rápido ya que te ejecuta de una sola vez una buena
cantidad de insert y no uno por uno.

ejemplo:
Sql = "Insert Into " & Chr(13)
Sql = Sql & "Insert Into " & Chr(13)
Sql = Sql & "Insert Into " & Chr(13)
...

Sql = Sql & "Insert Into " & Chr(13)

objCon.Execute Sql

Obviamente esto tendría que ir dentro de un ciclo.

Por otra parte te recomiendo consultar en el foro
microsoft.public.es.sqlserver para que ellos te den más alternativas.


Saludos,
Jhonny Vargas P. [MS-MVP]
Santiago de Chile
http://www.mvp.cl




"Miguel González" escribió en el mensaje
news:
Hay alguna forma en SQL para insertar multiples registros con una única
sentencia sin utilizar un SELECT de otra tabla?

Me explico. Tendría que insertar X registros en una tabla de dos campos. En
el primer campo siempre va el mismo valor, en el segundo el valor es
variable. Los valores del segundo campo los tengo en un Array. Por ahora
estoy ejecutando tantos "insert" como valores encuentre recorriendo con un
"For" el Array, pero esta forma me lleva harto tiempo y me gustaría poder
hacerlo "de golpe" con un solo "insert".

Es posible?

Saludos y Gracias!
Miguel



Respuesta Responder a este mensaje
#3 Jhonny Vargas P.
22/01/2004 - 15:58 | Informe spam
Utiliza la segunda opción la primera no vas a poder con access.


Saludos,
Jhonny Vargas P. [MS-MVP]
Santiago de Chile
http://www.mvp.cl


"Miguel González" escribió en el mensaje
news:

Gracias Jhonny... se me olvidó decir que la DB está en Access y el SQL
Server queda de entrada descartado. No obstante, me parece interesante
ahondar en tu primera propuesta, la de usar XML. El servidor web que alberga
las páginas sí soporta el xmldom y lo utilizo sin problemas para menesteres
similares, aunque me encuentro en la misma tesitura: me veo obligado a hacer
tropecientos "inserts".

Así que, teniendo previamente el XML, ¿cómo podría realizarse la inserción?

En su dia intenté tratar el XML como un recordset directamente pero no me
funcionaba (creo que por el ODBC del Access, pero no podría afirmarlo con
seguridad)

Saludos!
Miguel


"Jhonny Vargas P." escribió en el mensaje
news:
Hola Miguel,

Conozco dos formas, debe existir mucho más.

La primera es la utilización de Schemas, para esto debes construir un


schema
(xml) con la estructura de la base de datos y con la estructura de un
documento xml donde tendrías la información, obviamente deberías construir
un xml con lo que quieres subir al servidor. Tambien esto funcionaría solo
con SQL Server 2000, los tiempos son muy buenos, solo un par de segundos


en
subir una cantidad buena de registros (increíble).

La segunda es realizar varios insert seguidos en un string, y cada X


insert
lo ejecutas, esto es muy rápido ya que te ejecuta de una sola vez una


buena
cantidad de insert y no uno por uno.

ejemplo:
Sql = "Insert Into " & Chr(13)
Sql = Sql & "Insert Into " & Chr(13)
Sql = Sql & "Insert Into " & Chr(13)
...

Sql = Sql & "Insert Into " & Chr(13)

objCon.Execute Sql

Obviamente esto tendría que ir dentro de un ciclo.

Por otra parte te recomiendo consultar en el foro
microsoft.public.es.sqlserver para que ellos te den más alternativas.


Saludos,
Jhonny Vargas P. [MS-MVP]
Santiago de Chile
http://www.mvp.cl




"Miguel González" escribió en el mensaje
news:
Hay alguna forma en SQL para insertar multiples registros con una única
sentencia sin utilizar un SELECT de otra tabla?

Me explico. Tendría que insertar X registros en una tabla de dos campos.


En
el primer campo siempre va el mismo valor, en el segundo el valor es
variable. Los valores del segundo campo los tengo en un Array. Por ahora
estoy ejecutando tantos "insert" como valores encuentre recorriendo con un
"For" el Array, pero esta forma me lleva harto tiempo y me gustaría poder
hacerlo "de golpe" con un solo "insert".

Es posible?

Saludos y Gracias!
Miguel



Respuesta Responder a este mensaje
#4 Miguel González
22/01/2004 - 16:32 | Informe spam
Gracias!

Saludos!
Miguel

"Jhonny Vargas P." escribió en el mensaje news:%
Utiliza la segunda opción la primera no vas a poder con access.


Saludos,
Jhonny Vargas P. [MS-MVP]
Santiago de Chile
http://www.mvp.cl


"Miguel González" escribió en el mensaje
news:

Gracias Jhonny... se me olvidó decir que la DB está en Access y el SQL
Server queda de entrada descartado. No obstante, me parece interesante
ahondar en tu primera propuesta, la de usar XML. El servidor web que alberga
las páginas sí soporta el xmldom y lo utilizo sin problemas para menesteres
similares, aunque me encuentro en la misma tesitura: me veo obligado a hacer
tropecientos "inserts".

Así que, teniendo previamente el XML, ¿cómo podría realizarse la inserción?

En su dia intenté tratar el XML como un recordset directamente pero no me
funcionaba (creo que por el ODBC del Access, pero no podría afirmarlo con
seguridad)

Saludos!
Miguel


"Jhonny Vargas P." escribió en el mensaje
news:
> Hola Miguel,
>
> Conozco dos formas, debe existir mucho más.
>
> La primera es la utilización de Schemas, para esto debes construir un
schema
> (xml) con la estructura de la base de datos y con la estructura de un
> documento xml donde tendrías la información, obviamente deberías construir
> un xml con lo que quieres subir al servidor. Tambien esto funcionaría solo
> con SQL Server 2000, los tiempos son muy buenos, solo un par de segundos
en
> subir una cantidad buena de registros (increíble).
>
> La segunda es realizar varios insert seguidos en un string, y cada X
insert
> lo ejecutas, esto es muy rápido ya que te ejecuta de una sola vez una
buena
> cantidad de insert y no uno por uno.
>
> ejemplo:
> Sql = "Insert Into " & Chr(13)
> Sql = Sql & "Insert Into " & Chr(13)
> Sql = Sql & "Insert Into " & Chr(13)
> ...
>
> Sql = Sql & "Insert Into " & Chr(13)
>
> objCon.Execute Sql
>
> Obviamente esto tendría que ir dentro de un ciclo.
>
> Por otra parte te recomiendo consultar en el foro
> microsoft.public.es.sqlserver para que ellos te den más alternativas.
>
>
> Saludos,
> Jhonny Vargas P. [MS-MVP]
> Santiago de Chile
> http://www.mvp.cl
>
>
>
>
> "Miguel González" escribió en el mensaje
> news:
> Hay alguna forma en SQL para insertar multiples registros con una única
> sentencia sin utilizar un SELECT de otra tabla?
>
> Me explico. Tendría que insertar X registros en una tabla de dos campos.
En
> el primer campo siempre va el mismo valor, en el segundo el valor es
> variable. Los valores del segundo campo los tengo en un Array. Por ahora
> estoy ejecutando tantos "insert" como valores encuentre recorriendo con un
> "For" el Array, pero esta forma me lleva harto tiempo y me gustaría poder
> hacerlo "de golpe" con un solo "insert".
>
> Es posible?
>
> Saludos y Gracias!
> Miguel
>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida