FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas al Insertar registros de una tabla a otra periódicamente
Hola buenas, es mi primera consulta y, como novato, espero me perdonéis si no hago alguna cosa correctamente. Gracias de antemano a todos..
Tengo una duda sobre una consulta SQL ejecutada desde delphi 7 sobre MySQL que me está volviendo loco.. Agradezco si me echáis una mano.. Es simple. Tengo 2 tablas: 'TablaDestino', que está vacía, y 'TablaOrigen' que contiene los valores que deseo insertar en la primera tabla, y deseo hacerlo periódicamente en paquetes de 100 registros ordenados por el ID, es decir, primero copio del 1 al 100, luego del 101 al 200, y así.. Ambas son idénticas en estructura, tienen los mismos campos: ID,DT,TIME,V1,V2. En ambas el ID es la clave primaria autoincremental y el resto son datos sin más. Para ello realizo la siguiente consulta: 'INSERT INTO TablaDestino SELECT * FROM TablaOrigen ORDER BY ID ASC LIMIT 100' Y luego borro de la tabla 'TablaOrigen' esos 100 registros, de forma que la siguiente vez, coja los 100 siguientes.. Bueno, pues el caso es que lo hace bien la primera consulta (lo he comprobado en ambas tablas, inserta y borra), pero la siguiente vez me da error de sintaxis en la SQL.. He pensado que podía ser un tema de índices, por lo que he probado a insertar todos los campos menos el indice 'ID', pero tb me da error: 'INSERT INTO TablaDestino (DT,TIME,V1,V2) VALUES (DT,TIME,V1,V2) FROM TablaOrigen ORDER BY ID ASC LIMIT 100' Alguien me podría dar alguna pista? Mil gracias |
#2
|
||||
|
||||
No recuerdo que se pudiera hacer eso, creo que deben ser todos los campos.
|
#3
|
|||
|
|||
Problemas al Insertar registros de una tabla a otra periódicamente
Gracias por contestar Casimiro.
Si pongo todos los campos (tb el ID) me sale el mismo error: 'You have an error in your SQL sintax; check de manual.." He cambiado por esta otra y tampoco.. 'INSERT INTO TablaDestino (SELECT ID,DT,TIME,V1,V2 FROM TablaOrigen ORDER BY ID ASC LIMIT 100) ORDER BY ID' Pero lo desconcertante para mí es que, tanto en ésta última como en la más sencilla y que debería funcionar ('INSERT INTO TablaDestino SELECT * FROM TablaOrigen ORDER BY ID ASC LIMIT 100'), la instrucción la haga bien la primera vez y luego salga el error.. Porque entonces no puede ser un error de sintaxis.. Puede ser que al borrar de la tabla origen los 100 ya copiados pase algo con los índices que a mí se me escapa? En las tablas no veo ningún indice duplicado ni saltado.. Aparentemente lo hace bien cada vez que lo pongo en marcha (solo que solo lo hace una vez y a la siguiente sale el error). Alguna sugerencia? Muchas gracias! |
#4
|
||||
|
||||
Habría que ver el código que usas, poco más podemos ayudar con esa información.
|
#5
|
|||
|
|||
Cita:
procedure TFprincipal.THaonlineTimer(Sender: TObject); VAR idprimero:integer; begin Consulta.Close; Consulta.SQL.Add('INSERT INTO '+Tabladestino.TableName+' SELECT * FROM '+TablaOrigen.TableName+' ORDER BY ID ASC LIMIT 100'); Consulta.ExecSQL; Tabladestino.ApplyUpdates; TablaOrigen.Open; TablaOrigen.first; idprimero:=TablaOrigen.Fieldbyname('ID').asinteger; Consulta.Close; Consulta.SQL.Clear; Consulta.SQL.Add('DELETE FROM '+TablaOrigen.TableName); Consulta.SQL.Add(' WHERE ID>=:miID1 AND ID<=:miID2'); Consulta.ParamByName('miID1').asinteger:= idprimero; Consulta.ParamByName('miID2').asinteger:= idprimero+99; Consulta.ExecSQL; TablaOrigen.ApplyUpdates; TablaOrigen.close; end; Las Tablas tienen la propiedad cachedupdates a true. El procedimiento es un evento Ontimer que se ejecuta cada 5 sg. Si necesitáis información distinta a ésta me decís.. Gracias |
#6
|
|||
|
|||
hola a todos!!
Prueba añadiendo un SQL.clear antes de hacer la consulta INSERT INTO (linea en rojo del código)
|
#7
|
||||
|
||||
No olvides usar las etiquetas para el código.
|
#8
|
||||
|
||||
Cita:
Siempre utilizo sql.text en lugar de add, porque así no hay problema nunca.
|
#9
|
|||
|
|||
Cita:
Gracias de nuevo |
#10
|
|||
|
|||
Cita:
Ah y utilizaré las etiquetas! Un saludo y gracias de nuevo |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
actualizar tabla al insertar en otra tabla | hybrid | Conexión con bases de datos | 14 | 02-12-2009 15:09:13 |
enviar registros de una tabla a un campo de otra tabla a travez de ciclo IF en MYSQL | CLUSTERBIT | SQL | 8 | 23-10-2008 15:50:03 |
Dbgrid para insertar en una tabla pero cogiendo datos de otra tabla | taru | MySQL | 1 | 27-07-2006 15:36:12 |
Seleccionar registros en una tabla, envio, e insercion en otra tabla!! | EfrainSanmiguel | Conexión con bases de datos | 3 | 21-10-2004 01:12:43 |
Como insertar datos de una tabla en otra tabla? | Salomon | Firebird e Interbase | 1 | 28-08-2003 11:29:40 |
|