1

アクセス データベース テーブルにある nexusdb テーブルにデータを挿入したいと考えています。これには2つのクエリを使用しています。1 つはアクセス データベースからデータを選択するためのもので、もう 1 つは nexusdb に挿入するためのものです。ループを使用してこれを挿入したくありません。選択したすべてのデータセットを直接挿入する方法はありますか?

4

1 に答える 1

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;
于 2016-03-25T08:22:32.953 に答える