1

タスクは、SQL ServerにExcelスプレッドシートを読み取らせ、新しいエントリのみをテーブルにインポートすることです。エンティティはプロバイダーと呼ばれます。

次のようなExcelスプレッドシートについて考えてみます。

代替テキスト

そのターゲットテーブルは次のようになります。

代替テキスト

タスクは次のとおりです。

  • 2008Expressツールセットの使用
  • SQLSever2000の既存のテーブルにインポートします
  • テーブル内の既存のデータ!増分のあるアイデンティティはPKです。これは、参照が行われる別のテーブルでFKとして使用されます。
  • スプレッドシートから新しい行のみをインポートしてください!
  • スプレッドシートに存在しない行を無視する

質問: SQL 2008ツールセット(インポートおよびエクスポートウィザードの可能性が高い)を使用してこの目標を達成するにはどうすればよいですか?「転送するデータを指定するクエリを書く」必要があるのではないかと思います。

問題は、ツールが微調整を行うために生成するため、クエリが見つからないことです。

代替テキスト

4

2 に答える 2

3

私がおそらく行うことは、Excelデータをデータベース内の別のステージングテーブルに一括ロードしてから、メインテーブルでINSERTを実行して、存在しないレコードをコピーすることです。

例えば

INSERT MyRealTable (ID, FirstName, LastName,.....)
SELECT ID, FirstName, LastName,.....
FROM StagingTable s
    LEFT JOIN MyRealTable r ON s.ID = r.ID
WHERE r.ID IS NULL

完了したら、ステージングテーブルをドロップします。

于 2010-01-14T17:18:18.053 に答える
0

ロードする前にそのステージテーブルでいくつかの更新を実行し、必要に応じてクリーンアップすることもできます。たとえば、UPDATE SET NAME = RTROM(LTRIM(Name))FROMYOUR.STAGE.TABlE

于 2010-03-15T19:10:45.050 に答える