Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   inserciones de multiples filas (https://www.clubdelphi.com/foros/showthread.php?t=11153)

Tama 07-06-2004 18:36:23

inserciones de multiples filas
 
hola a todos:

es posible crear inserciones de varias filas en una tabla en SQL-server mediante una sola instruccion SQL, sin utilizar ADO?

gracias.

delphi.com.ar 07-06-2004 18:41:29

Si!
Puedes hacer un insert de un select por ejemplo.

Código SQL [-]
INSERT INTO TABLA (CAMPO1, CAMPO2, CAMPO3...)
SELECT CAMPO1, CAMPO2, CAMPO3... FROM TABLA2

Saludos!

Sirkius 07-06-2004 22:20:46

Umhh... interesante. Y se podría hacer poniendo de alguna forma los valores en la sentencia?? (por curiosidad mas que nada...)

guillotmarc 07-06-2004 22:23:52

Hola.

¿ Te refieres a esto ?

Código:

INSERT INTO TABLA (CAMPO1, CAMPO2, CAMPO3...)
VALUES (:CAMPO1, :CAMPO2, :CAMPO3, ...)

Saludos.

Tama 08-06-2004 10:23:10

Bueno, no es exactamente lo que estoy buscando. Me explico..., cuento con un grán número de datos que recibo por puerto serie y necesito probar si enviando un conjunto de ellos al servidor sql, éste en su total consume menor o igual tiempo que si le envío registro por registro, ya que el tiempo de envío al servidor entre un registro y el siguiente suele ser inferior a 1 ó 2 segundos.

Por lo que he visto hasta ahora, parece que es necesario que este tipo de inserts, se deben realizar desde un archivo de texto o desde una consulta previa, pero... ¿desde datos contenidos en memoria...?

saludos.

cbrrr 08-06-2004 10:48:03

Hola Tama

Si quieres hacer inserts de valores que no salgan de una sentencia Select, no te va a quedar más remedio que preparar un script con todas las sentencias y lanzar ese script mediante algún componente de acceso a tu motor que te permita tal característica o bien lanzar una a una las sentencia insert desde un componente Query.

Espero que te sirva

delphi.com.ar 08-06-2004 15:35:35

Si quieres ahorrar tiempo te recomiendo armar un único SQL, hacer u prepare, y ciclar cargando los valores de los registros por parámetros y ejecutándolo. La teoría dice que esto sería lo mas rápido, ya que el motor se evitaría de parsear, evaluar y compilar el SQL para cada insert.
Por otro lado, fíjate que tu pregunta original solo ha servido para que deliremos un poco, te recomiendo formular mejor tus futuras preguntas, y te sugiero que leas la Guía de Estilo.

Saludos!

jachguate 08-06-2004 15:54:54

Me parece que 1 o 2 segundos debiera ser un tiempo sobrado con cualquier servidor decente para insertar un dato. (De hecho una sola sentencia insert debiera ejecutarse en unos cuantos milisegundos).

Lo que te ha dicho delphi.com.ar es muy importante, y puede ayudarte a reducir "costos" de las inserciones... pero si aún asi es insuficiente, y despues de un rato de datos continuos hay un momento de respiro... podes valerte de tus componentes de acceso, que seguramente tendrán alguna forma de manejar datos en cache. De esta forma vas haciendo insert's sobre el cache, y una vez haya tiempo de "descanso" en la llegada de información, te encargas de aplicarlos a la BD.

Ojo, que esto tiene el riesgo de que los datos están solo en la memoria de la máquina cliente, con lo que con un corte de energia o fallo del programa se perderían irremediablemente.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 21:24:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi