2

当我尝试时,一个简单的数据流会引起很多麻烦

  1. 从一列( oracle 9.2.0.8)读取数据和
  2. 直接写入oracle目标表(同一个数据库)

我导入的列(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 回答