我需要使用SQL * Loader将平面文件加载到oracle数据库中。
平面文件包含一个字段,其中包含换行符作为有效数据。
该文件不是由换行符分隔的行。如何使用没有行分隔符但带有换行符的字段的SQL * Loader加载固定宽度的数据文件?
我将如何修改下面的控制文件来做到这一点?
LOAD DATA
INFILE 'mydata.dat'
INTO TABLE emp
(field1 POSITION(1:4) INTEGER EXTERNAL,
field2 POSITION(6:15) CHAR,
big_field POSITION(17:7000) CHAR
)
注意:我无法控制传入文件的格式。
Note: ... indicates that the data continues to the end of the field
example:
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
...
result:
field1: 1234
field2: 67890abcde
big_field: ghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
1234567890abcdefghijklmnopqrstuvwxyz
...
实际数据是什么样的;有几个选择取决于它..?注意,Oracle中varchar字段的最大大小为4000个字符,所以你可能会遇到你的'big_field' – Ben 2012-02-06 20:58:26
它会进入blob的问题,所以我们的长度很好。另外,这只是一个示例控制文件。 – ScrappyDev 2012-02-06 21:07:07
即使对于固定长度的文件,您也需要某种类型的行分隔符。 我们能够让我们的提供者修改带有行分隔符的文件。 感谢大家的帮助! – ScrappyDev 2012-02-09 19:06:12