sql loader截断始终是第一列

use*_*216 3 sql oracle sql-loader

我使用oracle 10g,我有这个file.ctl

OPTIONS (SKIP=1)
LOAD DATA
INFILE '/home/gxs/segmentation/sqlloader/datos.csv'
APPEND INTO TABLE test
(id "s_test.nextval",
name char(10) TERMINATED BY ',' ,
tel char(20) TERMINATED BY ',' ,
apellido char(10) TERMINATED BY ',' )
Run Code Online (Sandbox Code Playgroud)

我的csv文件es

name,tel,apellido
daniel,12345,buitrago
cesar,98765,san
alex,4556,ova
Run Code Online (Sandbox Code Playgroud)

但是当看到表时,名字没有第一个字符:

id   name   apellido   tel
1    aniel  buitrago   12345
2    esar   san        98765
3    lex    ova        4556
Run Code Online (Sandbox Code Playgroud)

做什么?

Ale*_*ole 5

根据文档,您需要使用EXPRESSION关键字来显示该值纯粹来自指定的表达式,并且不依赖于数据文件中的任何内容:

OPTIONS (SKIP=1)
LOAD DATA
INFILE '/home/gxs/segmentation/sqlloader/datos.csv'
APPEND INTO TABLE test
(id EXPRESSION "s_test.nextval",
name char(10) TERMINATED BY ',' ,
tel char(20) TERMINATED BY ',' ,
apellido char(10) TERMINATED BY ',' )
Run Code Online (Sandbox Code Playgroud)

...插入:

        ID NAME       TEL        APELLIDO
---------- ---------- ---------- ----------
         1 daniel     12345      buitrago
         2 cesar      98765      san
         3 alex       4556       ova
Run Code Online (Sandbox Code Playgroud)

在它的假设时刻ID为您的数据文件中的字段,因为你还没有指定的数据类型它默认为char尺寸1,这是消耗你的真实场的第一个字符.