- PR -

DTSのエクスポートの仕様について(SQL Server2000)

1
投稿者投稿内容
kiyoharu
常連さん
会議室デビュー日: 2005/08/06
投稿数: 25
お住まい・勤務地: 神奈川県鎌倉市
投稿日時: 2005-12-08 10:20
お世話になります。
DTSパッケージを利用してテーブルデータのエクスポート
を繰り返し実施しているのですが、エクスポートの対象
ファイルをCSVにしている場合とエクセルにしている場合
とで処理内容に差異が発生します。
CSVの場合は出力内容が上書きで出力され、前回出力された
内容がキャンセルされ、最新のデータのみが記述されるの
ですが、エクセルの場合は出力データが追記式となり、
前回出力されたデータに最新のデータが追記される形となります。

この結果はDTSの仕様なのでしょうか。
また、当処理を決定するプロパティなどはあるのでしょうか。
(パッケージ作成画面を見た限りでは無いようにおもわれるのですが。。。)

ご存知の方が居られましたらご教授頂けます様、よろしくお願いいたします。
TLC
大ベテラン
会議室デビュー日: 2005/05/31
投稿数: 152
お住まい・勤務地: 東京都
投稿日時: 2005-12-11 12:07
引用:

kiyoharuさんの書き込み (2005-12-08 10:20) より:

CSVの場合は出力内容が上書きで出力され、前回出力された
内容がキャンセルされ、最新のデータのみが記述されるの
ですが、エクセルの場合は出力データが追記式となり、
前回出力されたデータに最新のデータが追記される形となります。



お疲れ様です。

仕様かどうかは MS の方しか回答できないと思いますが,
現状で kiyoharu さんのおっしゃっているように動作します。

さて,
この問題ですが,

■ことを「Excel ファイル」としてみないで考えると理由がよくわかります

おそらくウィザードで作成されたパッケージをご覧になっていると思いますので,
Excel へのデータパイプは 「CREATE」や「DELETE」など,データベースと同じように操作されていると思います。

ウィザードでたとえば Access などにデータをパイプしてみるとよくわかるのですが

■「変換」オプションでは「変換先テーブルに行を追加」がデフォルトになっています

これが原因で,
Excel も Access もSQL Server も「OLEDB データソースとして」認識可能なソースについては追記が既定の動作です。
(ETL としての役割を考えればこれは自然な動作です)

また,
■「変換」オプションの「変換先テーブル内の行を削除」は単に事前に「DELETE」するタスクが追加されるだけ

の動作になりますので,
出来上がったパッケージの中身を眺めてもオプションなどはありません。

よって,
kiyoharu さんの要件では,
■中身を事前に消す
または
■新しい受け皿用のシートを作成する
タスクを定義してあげればよいと思います。

いかがでしょうか?
----------
TimberLandChapel.com Workshop
http://blogs.timberlandchapel.com/blogs/workshop/archive/2005/12/06/519.aspx
kiyoharu
常連さん
会議室デビュー日: 2005/08/06
投稿数: 25
お住まい・勤務地: 神奈川県鎌倉市
投稿日時: 2005-12-11 22:22
TLC様、ご回答ありがとうございます。
(いつも教えていただいて、大変勉強になっております。)
確かに、仕様かどうかはMSでないと回答できないですね。
愚問でした。(お恥ずかしい。。)

ご説明いただいた具体例でやっと納得がいきました。
解決策の方は提案くださいました

・新しい受け皿用のシートを作成するタスク
 
を定義することで対応したいと思います。


詳説いただき、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)