SSIS Components for SendGrid

Build 25.0.9540

INSERT INTO SELECT ステートメント

INSERT INTO SELECT クエリを使用すると、あるテーブルからレコードのリストを選択し、それらのレコードをグループとして別のテーブルに挿入できます。このようにレコードをバッチで挿入すると、個別のINSERT INTO クエリを多数使用する場合と比較して、クエリパフォーマンスが向上する可能性があります。

別のテーブルへの挿入対象として選択されるレコードのテーブルは、実テーブルまたはユーザー定義の一時テーブルのいずれかです。

実テーブルからのレコード挿入

ある実(非一時)ソーステーブルから別の変換先テーブルにレコードのグループを挿入するには、INSERT INTO SELECT クエリを使用します。このタイプのクエリは標準のINSERT INTO クエリと同様の形式ですが、VALUES 句がソーステーブルを対象とするSELECT クエリに置き換えられます。埋め込まれたSELECT クエリに一致するすべてのレコードが変換先テーブルに挿入されます。

ソーステーブルと変換先テーブルのカラム名が異なる場合は、ソーステーブルのカラムを挿入先の変換先テーブルの対応するカラムにマッピングする必要があります。このマッピングは、変換先テーブルのカラムを、マッチさせたいソーステーブルのカラムと同じ順序で指定することで行います。次に例を示します。

INSERT INTO DestinationTable (A,B,C,D) SELECT Q,R,S,T FROM SourceTable

この例では、最初のソースカラム(Q)が最初の変換先カラム(A)に挿入され、2番目のソースカラム(R)が2番目の変換先カラム(B)に挿入されます(以下同様)。

ソーステーブルと変換先テーブルの両方が同じ名前の同じカラムリストを持っている場合は、簡略化されたクエリを使用できます。

INSERT INTO DestinationTableWithSameColumns SELECT * FROM SourceTable

この例では、メタデータがすでに一致しているため、ソーステーブルまたは変換先テーブルのカラムリストを指定する必要はありません。

一時テーブルからのレコード挿入

一時テーブルを手動で定義してデータを入力し、後で一括挿入するためのレコードのリストを保持できます。

一時テーブルへの入力

一時テーブルを作成するには、名前の末尾に「#TEMP」を付け、そのテーブルがすでにデータベースに存在するかのようにその名前を使用してINSERT INTO クエリを実行します。最初のINSERT INTO を実行すると、一時テーブルが作成され、後続のINSERT を受け取れるようになります。次に例を示します。

INSERT INTO MarketingCampaigns#TEMP (Subject, MyCustomField__c) VALUES ('New MarketingCampaigns', '9000');
INSERT INTO MarketingCampaigns#TEMP (Subject, MyCustomField__c) VALUES ('New MarketingCampaigns 2', '9001');
INSERT INTO MarketingCampaigns#TEMP (Subject, MyCustomField__c) VALUES ('New MarketingCampaigns 3', '9002');

このコードでは、2つのカラムと3つのデータ行を含む「MarketingCampaigns#TEMP」という名前の一時テーブルが作成されます。一時テーブル自体では型を判別できないため、すべての値は文字列と見なされ、後で対象の実(非一時)テーブルに一括挿入されるときに適切な型に変換されます。

一時テーブルの内容を実テーブルに挿入

一時テーブルにデータが入力されたら、一時テーブルのレコードを挿入したい実(非一時)テーブルを対象としてINSERT INTO SELECT クエリを実行します。これは標準のINSERT INTO クエリと同様の形式ですが、VALUES 句が一時テーブル内の対応するカラムを対象とするSELECT クエリに置き換えられます。次に例を示します。

INSERT INTO MarketingCampaigns (Subject, MyCustomField__c) SELECT Subject, MyCustomField__c FROM MarketingCampaigns#TEMP
この例では、MarketingCampaigns#TEMP のすべての内容がMarketingCampaigns に挿入されます。

結果

LastResultInfo#TEMP 一時テーブルには、INSERT INTO SELECT クエリで一時テーブルをレコードのソースとして使用する場合のように、埋め込みSELECT 句で一時テーブルの内容を使用した最後に実行されたクエリの詳細が含まれます。このテーブルは、そのようなクエリが実行されるたびにクリアされ、再入力されます。LastResultInfo#TEMP には、該当のクエリが成功したかどうか、クエリによって影響を受けた行数などの情報が含まれます。

一時テーブルの存続時間

一時テーブルは、接続が開いている間だけ存続します。SendGrid への接続が閉じられると、LastResultInfo#TEMP テーブルを含むすべての一時テーブルがクリアされます。

Copyright (c) 2026 CData Software, Inc. - All rights reserved.
Build 25.0.9540