アクセス データベース テーブルにある nexusdb テーブルにデータを挿入したいと考えています。これには2つのクエリを使用しています。1 つはアクセス データベースからデータを選択するためのもので、もう 1 つは nexusdb に挿入するためのものです。ループを使用してこれを挿入したくありません。選択したすべてのデータセットを直接挿入する方法はありますか?
1 に答える
選択したすべてのデータセットを直接挿入する方法はありますか?
たとえば、2 つのデータベースが MS Sql サーバーまたは MySql のような他のバックエンド Sql サーバー上にある場合、これを行うことができますが、MS Access と NexusDB の間では、私が知っているものはありません。それらが共通しているように見える唯一のdbアクセスコネクタはODBCであり、異なるドライバー間での異種クエリをサポートしていないことがわかっています(そのため、「destinationserver.database.table select * from source.databaseへの挿入」を実行できません。テーブル")
だから私はあなたがループで立ち往生していると思います。唯一の問題は、ループを自分で作成する必要があるのか、それともライブラリ コードに隠されているのかということです。
以下のコードは、FireDAC の TFDDataMove コンポーネントを使用してテーブル間でデータを移動します。もちろん、これを使用するには、宛先サーバーが FireDAC または ODBC をサポートしている必要があります。Uwe Raabe が言うように、現在 (Delphi の現在のバージョンはシアトル)、FireDAC は NexusDB をサポートしていません。ただし、Web サイトによると、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;