PDA

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