- PR -

DTSでの取込データのスキップの方法について

1
投稿者投稿内容
MI
会議室デビュー日: 2004/09/07
投稿数: 15
投稿日時: 2006-09-05 18:26
いつもお世話になっております。

DTSについて初歩的な質問だと思うのですが、
現在業務でCSVファイルからDTSを使用してSQLServer2000のテーブルに取り込む処理を開発しております。
要件としては、あるコードの値によって「取り込む、取り込まない」を判定したいのですが、通常ですとDTSは存在するデータすべてテーブルに取込もうとしてしまいます。

どのように制御すれば不要データをスキップできるかご存知の方がおられましたら、ご教授下さい。
よろしくお願いいたします。

:追伸
SQLDTS.comを覗いていますが、いまいち合致するものが見当たりません。。。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2006-09-05 19:22
ActiveXスクリプトのとこで、
コード:
Function Main()
    If 条件 Then
        Main = DTSTransformStat_SkipRow
        Exit Function
    End If
End Function


データドリブンクエリタスクでこんなかんじでスキップさせてます。
条件のとこで、DTSSourceの値とDTSLookupsでとってきた値を比較したりしてね。

引用:

通常ですとDTSは存在するデータすべてテーブルに取込もうとしてしまいます。


MIさんがなんのタスクを使ってるのかわかりませんが、データドリブン以外でスクリプトを書けたかどうかは忘れた。。。

いちお、検索したんでよかったら
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/dtsprog/dtspconst_3h6b.asp
MI
会議室デビュー日: 2004/09/07
投稿数: 15
投稿日時: 2006-09-05 20:13
かめたろさん返信ありがとうございます。

Main = DTSTransformStat_SkipRow という形で行ってみたのですが、
1件もINSERTされなくなってしまいました。
現象的には、全件スキップされているように見えます。

ちなみにタスクは、「データ変換タスク」を使っており、ActiveX Scriptで入力データチェックや値のセットをしています。

「通常すべてのデータを取り込んでしまう」と書いたのは、
とくに条件判断もなく、常に Main = DTSTransformStat_OK でやっていたからです。誤解でした。。。
(しかし、この場合はINSERTは出来ていたのですが。。。)

私の設定に誤りがあるせいなのかもしれませんが、
いまいち1件もINSERTされない原因が分かりません。
もし何か分かりましたら、またご教授いただけますと助かります。

よろしくお願いいたします。

引用:

かめたろさんの書き込み (2006-09-05 19:22) より:
ActiveXスクリプトのとこで、
コード:
Function Main()
    If 条件 Then
        Main = DTSTransformStat_SkipRow
        Exit Function
    End If
End Function


データドリブンクエリタスクでこんなかんじでスキップさせてます。
条件のとこで、DTSSourceの値とDTSLookupsでとってきた値を比較したりしてね。

引用:

通常ですとDTSは存在するデータすべてテーブルに取込もうとしてしまいます。


MIさんがなんのタスクを使ってるのかわかりませんが、データドリブン以外でスクリプトを書けたかどうかは忘れた。。。

いちお、検索したんでよかったら
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/dtsprog/dtspconst_3h6b.asp

MI
会議室デビュー日: 2004/09/07
投稿数: 15
投稿日時: 2006-09-05 20:30
条件にて比較しているグローバル値に誤りがあったため、
全件スキップルートに入ってしまったようです。

まだ正しくINSERT出来ているかどうかは検証できてませんが、
先ほどの書き込みの質問が撤回させていただきます。

お騒がせしてすみません。

[quote]
MIさんの書き込み (2006-09-05 20:13) より:
かめたろさん返信ありがとうございます。

Main = DTSTransformStat_SkipRow という形で行ってみたのですが、
1件もINSERTされなくなってしまいました。
現象的には、全件スキップされているように見えます。

ちなみにタスクは、「データ変換タスク」を使っており、ActiveX Scriptで入力データチェックや値のセットをしています。

「通常すべてのデータを取り込んでしまう」と書いたのは、
とくに条件判断もなく、常に Main = DTSTransformStat_OK でやっていたからです。誤解でした。。。
(しかし、この場合はINSERTは出来ていたのですが。。。)

私の設定に誤りがあるせいなのかもしれませんが、
いまいち1件もINSERTされない原因が分かりません。
もし何か分かりましたら、またご教授いただけますと助かります。

よろしくお願いいたします。
MI
会議室デビュー日: 2004/09/07
投稿数: 15
投稿日時: 2006-09-12 09:56
お陰さまで無事にスキップできるようになり、本件は解決しました。
ありがとうございました。
1

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