Delphi ZEOSlib:从表中读取并将其写入另一个数据库

时间:2013-06-24 20:02:50

标签: mysql database delphi zeos

是否可以使用delphi zeoslib从数据库中读取表并将其写回另一台服务器?

我认为,阅读表并回写结果集,但我不知道怎么可能?

我想到了以下几点: 我创建了一个zquery:Select * from table1zconnection1,我希望将结果插回到另一个数据库,zconnection2

我使用mysql个数据库。

1 个答案:

答案 0 :(得分:0)

我不知道MySQL(或Zeos)是否支持跨服务器查询; MySQL documentation应回答该部分。 Zeos是否允许通过DBMS也是一个我无法回答的问题;使用开源产品的一个缺点是它们通常缺少可以告诉你这些事情的文档。

我肯定知道的一种方法是工作(尽管对于非常大的表来说会有点慢)是逐行进行的:

var
  i: Integer;
begin
  ZQuery1.SQL.Text := 'SELECT * FROM MyDataOnServer1';
  while not ZQuery1.Eof do
  begin
    ZTable1.Append;
    for i := 0 to ZQuery1.FieldCount - 1 do
      ZTable1.Fields[i].Value := ZQuery1.Fields[i].Value;
  end;
  ZTable1.Post;
end;

另外两个可能的替代方案(我不知道MySQL或Zeos是否支持)都是

  • 从server1导出表作为备份,并将其还原到server2
  • 如果支持SELECT...INTO,您可以在server1上选择一个临时磁盘文件,然后将INSERT FROM临时磁盘表导入server2