フラットファイルから値を取得してテーブルに挿入するという点で、ssisパッケージがあります。
私は1つのtemptableを作成するという点で1つのSQL実行タスクを取りました
CREATE TABLE [tempdb].dbo.##temptable
(
date datetime,
companyname nvarchar(50),
price decimal(10,0),
PortfolioId int,
stype nvarchar(50)
)
Insert into [tempdb].dbo.##temptable (date,companyname,price,PortfolioId,stype)
SELECT date,companyname,price,PortfolioId,stype
FROM ProgressNAV
WHERE (Date = '2011-09-30') AND (PortfolioId = 5) AND (stype in ('Index'))
ORDER BY CompanyName
今、上記のクエリで、変数名を使用して(Date = '2011-09-30') AND (PortfolioId = 5) AND (stype in ('Index'))
これらの3つのパラメータを渡す必要があります。パッケージに変数を作成して、動的にします。
SQL実行タスクで、SQLSourceTypeがDirect Inputに設定されていることを確認します。次に、SQLステートメントがストアドプロシージャの名前であり、次のように、プロシージャの各パラメータに疑問符が付きます。
左の列のパラメーターマッピングをクリックして、ストアドプロシージャから各パラメーターを追加し、SSIS変数にマップします。
このタスクを実行すると、SSIS変数がストアドプロシージャに渡されます。
ExcelおよびOLED DB接続マネージャーはパラメーター名0および1を使用します
私はoledb接続を使用しており、クエリが機能しなかった理由を理解しようとしたり、パラメーターを取得したりするのに数時間を費やしていました。上記の説明は大いに役立ちました。
@PaulStockの答えとともに、接続の種類、変数名、およびSQLStatement/SQLStatementSourceの変更に応じて
https://docs.Microsoft.com/en-us/sql/integration-services/control-flow/execute-sql-task
パーティーに少し遅れましたが、これは私が挿入のためにそれをした方法です:
DECLARE @ManagerID AS Varchar (25) = 'NA'
DECLARE @ManagerEmail AS Varchar (50) = 'NA'
Declare @RecordCount AS int = 0
SET @ManagerID = ?
SET @ManagerEmail = ?
SET @RecordCount = ?
INSERT INTO...