我想将数据插入到 access 数据库表中的 nexusdb 表中。我为此使用了两个查询。一种用于从 access 数据库中选择数据,另一种用于插入到 nexusdb。我不想使用循环插入它。有没有办法直接插入所有选定的数据集?
问问题
1206 次
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 回答