0

株式市場価格に関連する動的な Excel シートがあります。このシートの名前付き範囲から、行の変更をトリガーして、選択した列をデータベース テーブルの新しいレコードとしてエクスポートしたいと考えています。

これは、データベース テーブルに挿入される多くの Excel 行のデータ変更に適用されます。

  1. 堅牢で信頼性の高い接続に最適なテクニックは何ですか?
  2. SQL への変更行エクスポートの例やチュートリアルはありますか?
4

1 に答える 1

0

いくつかの方法があります。最終テーブルに進む前に、SSIS パッケージを呼び出して、X 分または X 時間ごとにステージング データベース テーブルにスプレッドシートをインポートするジョブを設定できます。新しい情報をインポートして追加するプロセス、または既存の情報を更新するプロセスは、以下のように MERGE コマンドを適用する SQL タスクを使用して実行されます。この例では、Row1 フィールドは各レコードの一意の値です (TestID は、データベース テーブル Tests に一意の自動インクリメント主キーです)。フィールドの組み合わせを使用して、各レコードを一意に定義することもできます。これを要求したわけではありませんが、変更を追跡してトレーサビリティを維持するために、履歴テーブルを含めることをお勧めします。

MERGE dbo.Tests AS t
USING (SELECT Row1, Row2 FROM dbo.Tests_import) AS s
ON (t.Row1 = s.Row1)
WHEN NOT MATCHED THEN
    INSERT (Row1, Row2, DateCreated) VALUES(s.Row1, s.Row2, GETDATE())
WHEN MATCHED and s.Row2 <> t.Row2 THEN
    UPDATE SET t.Row2 = s.Row2, t.DateUpdated = GETDATE()
OUTPUT $action, inserted.TestID, inserted.Row1, inserted.Row2, inserted.DateCreated, inserted.DateUpdated
INTO dbo.Tests_History ([Action], fk_TestID, Row1, Row2, DateCreated, DateUpdated);  

上記の例では、Tests_import テーブルは一時的なステージング テーブルであり、Tests テーブルは最終的なインポート場所であり、Tests_History は一意の各レコードの履歴を追跡します。プロセスが完了したら、Tests_import の内容を削除するか、それを SSIS パッケージに適用される最初のステップとして設定できます。このようにして、SSIS パッケージを再度実行する前に問題が発生した場合に備えて、最初のインポートと最終的な Tests テーブルを比較できます。

お役に立てれば。

于 2012-12-14T23:36:44.623 に答える