我想将数据插入到访问数据库表中的nexusdb表中。我正在使用两个查询。一个用于从访问数据库中选择数据,另一个用于插入到nexusdb。我不希望使用循环插入它。有没有办法直接插入所有选定的数据集?
答案 0 :(得分:1)
有没有办法直接插入所有选定的数据集?
如果有两个数据库,比如MS Sql Server或其他一些后端Sql服务器,比如MySql,你可以这样做,但在MS Access和NexusDB之间,我所知道的都没有。它们似乎共有的唯一数据库访问连接器是ODBC,并且afaik不支持跨不同驱动程序的异构查询(因此您无法执行“从source.database插入到destinationserver.database.table select *” 。表“)
所以我觉得你已经陷入了一个循环。唯一真正的问题是你是否必须自己编写循环或是否隐藏在库代码中。
下面的代码使用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;