1

我想将数据插入到 access 数据库表中的 nexusdb 表中。我为此使用了两个查询。一种用于从 access 数据库中选择数据,另一种用于插入到 nexusdb。我不想使用循环插入它。有没有办法直接插入所有选定的数据集?

4

1 回答 1

1

有没有办法直接插入所有选定的数据集?

如果这两个数据库在 MS Sql Servers 或其他一些后端 Sql 服务器(如 MySql)上,你可以这样做,但在 MS Access 和 NexusDB 之间,我不知道。他们似乎唯一共有的数据库访问连接器是 ODBC,并且 afaik 不支持跨不同驱动程序的异构查询(因此您无法执行“插入到destinationserver.database.table select * from source.database 。桌子”)

所以我认为你陷入了一个循环。唯一真正的问题是您是否必须自己编写循环,或者它是否隐藏在库代码中。

下面的代码使用 FireDAC 的 TFDDataMove 组件在表之间移动数据。当然,要使用它需要目标服务器支持 FireDAC 或 ODBC。正如 Uwe Raabe 所说,截至目前(Delphi 当前版本是西雅图)FireDAC 不支持 NexusDB,反之亦然。但是,根据他们的网站,NexusDB 有一个可用的 ODBC 驱动程序。虽然我没有安装 NexusDB,但以下内容适用于另一个 ODBC 驱动程序,因此应该适用于 NexusDB。

procedure TForm1.TestDataMove;
var
  Item : TFdMappingItem;
begin
  Item := FDDataMove1.Mappings.Add;
  Item.SourceFieldName := 'ID';
  Item.DestinationFieldName := 'ID';

  Item := FDDataMove1.Mappings.Add;
  Item.SourceFieldName := 'Name';
  Item.DestinationFieldName := 'Name';

  FDDataMove1.Source := FDTable1;
  FDDataMove1.Destination := FDTable2;
  FDDataMove1.Options := FDDataMove1.Options - [poOptimiseSrc];
  FDDataMove1.Execute;

  FDConnection2.Connected := False;
  FDTable2.Open;
end;
于 2016-03-25T08:22:32.953 回答