- - PR -
DTSを使ったCSVファイル取込みについて
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-07-19 12:43
いつもお世話になっています。
DTSを使ってCSVファイルを取り込みたいと考えています。 データ変換タスクを利用して、 事前にCSVファイルのデータチェック(Lengthや型チェック)を行い、 チェックOKのデータはテーブルへインポートし チェックNGのデータはエラー用のCSVファイルに書き込むような処理をしたいのですが・・ この一連の処理をDTSを使って行なうことは可能でしょうか? また上記のデータチェックはデータ変換タスクのActiveXスクリプトを使うことで 実現できるのでしょうか? 方法をご存知の方がいらっしゃいましたら宜しくお願いします。 環境:SQLServer2000 | ||||||||||||
|
投稿日時: 2007-07-19 14:14
試してはいないですけど・・・。
変換タブで変換の矢印を右クリックすると"フラグ"ってのが出てきます。そこでデータ型チェックの方法を選択することができそうです。固有のチェックが必要な場合はActiveXスクリプトでやるしかないと思います。照合タブを使えば、データベースにクエリしつつチェックなんてこともできます。
オプションタブに例外ファイルって欄があるので、それ使えないでしょうか?ファイルの種類で"転送元エラー行"あたりを選べばいいような気がします。
データ変換タスクでは変換の種類のデフォルトは"Copy Column"だと思うので、それは削除して、"ActiveX Script"の変換を新規で作るかんじになると思います。Scriptでチェックした結果その行がエラーなのであれば、DTSTransformStat_Error定数を戻してやれば例外ファイルの方に出力されそうですが。 DTSの定数の意味は Books Online に出てるので、どうゆう動きをするのか確認してみてください。 | ||||||||||||
|
投稿日時: 2007-07-19 17:21
かめたろさま、迅速な回答どうもありがとうございます。
データチェックはActiveXスクリプトで行なうことにしました。 チェックNGの時にDTSTransformStat_xxxxを戻す処理ですが、 DTSTransformStat_SkipRowInfo(この行の処理を終了し、情報を使用して ErrorSink を呼び出します。) を戻すと、チェックOKのデータはテーブルに入りますがチェックNGのデータが例外ファイルに書き込まれません。 また、 DTSTransformStat_ExceptionRow(例外としてこの行の処理を終了してエラー シンクを呼び出し、例外ファイルにこの行を書き込みます。) を戻すと、チェックNGのデータは例外ファイルに書き込まれますがチェックOKのデータがテーブルに入りません。 他のDTSTransformStat_xxxを使っていろいろと試してみているのですが、 実現したい形には至っていません。 引き続き、何か良いアドバイスがありましたら宜しくお願いします。 [ メッセージ編集済み 編集者: eich2509 編集日時 2007-07-19 17:26 ] | ||||||||||||
|
投稿日時: 2007-07-20 10:44
簡単なのを作って試してみました。
当方ではそのようなことはありませんでした。 DTSTransformStat_Errorの場合と同じ結果を得ました。この定数、どう違うのかは分かりませんが・・・。 うーん何でだろ。トランザクション操作のオプションが違うのかなぁ。 ---追記--------- "オプション"タブの"最大エラー数"はゼロのままになってないですか?ゼロのままだと1回目のエラーで処理が中断されちゃいます。最大値は9999。変換元データに当然のようにエラーが含まれるような場合は、ここが要件に合わないかもしれませんね。 [ メッセージ編集済み 編集者: かめたろ 編集日時 2007-07-20 11:00 ] | ||||||||||||
|
投稿日時: 2007-07-20 15:04
すみません、、 まさしく追記でおっしゃっているとおりゼロのままでした。 わざわざ動作確認までしていただいたようで、本当にありがとうございます。 実現したい形に持っていくことができました!!! |
1