Ver la Versión Completa : insertar registro de otra tabla diferentes base de datos
igamerpc
01-04-2020, 10:20:52
Buenos dias, como insertar registro de otra tabla diferentes base de datos.
CFG.MyQuery1.SQL.Clear;
CFG.MyQuery1.SQL.Add('INSERT INTO '+bbdd+'.'+tabla2+');
CFG.MyQuery1.SQL.Add('SELECT * FROM '+tabla1+' where CODIGO:=codigo);
Me parece eso no funciona.
Casimiro Notevi
01-04-2020, 12:13:53
Conectas a DB1
Lees registro de DB1
Conectas a DB2
Guardas registro en DB2
Cierras DB2
Cierras DB1
igamerpc
01-04-2020, 12:28:50
Ese es mas facil de hacer. Gracias. Pense funcionar como SQL pero no salio.
Lo unico tu metodo es facilisimo.
movorack
01-04-2020, 15:49:54
Hacer la inserción como quieres también es posible y es hasta mas rápida. la sintaxis depende de cada motor.
MSSQL
INSERT INTO DB2.DBO.TABLE1
SELECT * FROM TABLE1 --Acá está apuntando a la DB conectada actualmente
para esto, el usuario debe tener permisos en ambas DB
oscarac
01-04-2020, 17:43:21
Buenos dias, como insertar registro de otra tabla diferentes base de datos.
CFG.MyQuery1.SQL.Clear;
CFG.MyQuery1.SQL.Add('INSERT INTO '+bbdd+'.'+tabla2+');
CFG.MyQuery1.SQL.Add('SELECT * FROM '+tabla1+' where CODIGO:=codigo);
Me parece eso no funciona.
a que te refieres con tablas planas?
a tablas libres?
o que motor de base de datos estas usando?
si usas algun motor el error podria estar en que en el segundo query no hacer referencia a la base de datos donde se aloja la tabla1
('SELECT * FROM [servidor.database.dbo.]'+tabla1+' where CODIGO:=codigo)
igamerpc
02-04-2020, 11:21:53
CFG.MyTable2.Active:=True;
CFG.MyTable2.Append;
CFG.MyTable2.FieldByName('IDCODIGO').Value:=CFG.MyTable1.FieldByName('IDCODIGO').Value;
CFG.MyTable2.FieldByName('NOMBRE').Value:= CFG.MyTable1.FieldByName('NOMBRE').Value;
CFG.MyTable2.Post;
A ver ese dicen que son mas lento que Insert. El problema que sin pongo insert me da mas error y tampoco query.
igamerpc
02-04-2020, 13:30:13
funciona insert, primero leer tabla1, y luego insertar tabla2.
igamerpc
16-04-2020, 11:11:29
Para pasar de mysql a otro mysql de otra base de datos, para que no se repita revisar. Solo insertan los nuevos.
La misma estructura pero diferente base de datos.
procedure TForm1.Insertar_Pueblo(Tabla_Pueblo:string; codigo:integer; codigonombre:string; pueblo:string; numeroHab:integer; Sender:TObject);
begin
if MOD.MyConnection2.Connected=FALSE then
MOD.MyConnection2.Connected:=TRUE;
if MOD.MyConnection1.Connected=FALSE then
MOD.MyConnection1.Connected:=TRUE;
MOD.MyTable2.TableName:=Tabla_Pueblo;
MOD.MyTable2.Active:=True;
MOD.MyTable1.TableName:=Tabla_Pueblo;
MOD.MyTable1.Active:=True;
MOD.MyQuery1.SQL.Clear;
MOD.MyQuery1.SQL.Add('SELECT * FROM '+Tabla_Pueblo+'');
MOD.MyQuery1.Active:=True;
If MOD.MyQuery1.RecordCount = 0 then
Begin
MOD.MyCommand2.SQL.Clear;
MOD.MyCommand2.SQL.Add('INSERT INTO '+Tabla_Pueblo+'(codigo, codigonombre, pueblo, numeroHab) VALUES(:codigo, :codigonombre, :pueblo, :numeroHab)');
MOD.MyCommand2.ParamByName('codigo').Value:=codigo;
MOD.MyCommand2.ParamByName('codigonombre').Value:=codigonombre;
MOD.MyCommand2.ParamByName('pueblo').Value:=pueblo;
MOD.MyCommand2.ParamByName('numeroHab').Value:=numeroHab;
Try
MOD.MyCommand2.Execute;
Except
end;
end;
MOD.MyTable2.Active:=False;
end;
No insertan, sin select, se insertan pero revisar volver de principio. Tengo 600 registro
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.