2

単純なデータフローは、私がしようとすると多くの問題を引き起こします

  1. 1つの列(oracle 9.2.0.8)からデータを読み取り、
  2. オラクルの宛先テーブル(同じデータベース)に直接書き込みます

インポートするcolumn(varchar2 25byte)は次のようになります。

241200001
151200001
211200001
161200001
1231704383

宛先テーブルの列(char 10byte)を選択すると、次のようになります。

241200001
151200001 3
211200001 3
161200001 3
1231704383

次のスクリーンショットは、ソースと宛先の間のデータグリッドを示しています。ここでは、すべてが正常であるように見えます。

ここに画像の説明を入力してください

次のスクリーンショットは、ゼロが追加されて終了していることを示していますが、どこにでもあるわけではありません。(これは宛先タスクのプレビューウィンドウですが、TOADでも同じように見えます)

ここに画像の説明を入力してください


値の長さを調べると、次の結果が得られますが、これはかなり問題ないようです。

Select
id,
length(id) as length
from test_view


ID                           LENGTH
------------------------- ----------
42120001                           8
23120001                           8
22120001                           8
26120001                           8
25120001                           8
22120001                           8
22120001                           8
23120001                           8
18120001                           8
18120001                           8
1235800020                        10
58120001                           8
52120001                           8
52120001                           8
57120001                           8
52120001                           8
52120001                           8

何らかの理由で、末尾にスペースを付けた付加価値があります。間に値が追加されているのを見てきましたが1-3、これはどこから来ているのでしょうか。宛先が短いことが心配な場合は、切り捨ては発生しません。宛先列を設定するvarchar2と機能しますが、そのままにしておく必要があります。

データフロー内では、データはstring(25)です。では、なぜこの目的地に問題があるのでしょうか。

アップデート:

これは変です。コードページの警告がこのエラーの原因ではないと思います。入力データは見栄えがよく、パッケージはかなり標準的です。これは本当にドライバーの問題なのか、それとも宛先タスクの問題/バグなのか?

4

1 に答える 1

1

データ フローで派生列変換を使用して、varchar(25) を char(10) に明示的に変換してみてください。エラーは、暗黙的な変換が期待どおりに機能しないことが原因である可能性があります。

于 2012-08-02T09:12:49.123 に答える