sql loader截断始终是第一列

时间:2013-09-23 00:27:05

标签: sql oracle sql-loader

我使用了oracle 10g,我有这个文件.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 ',' )

我的csv文件es

name,tel,apellido
daniel,12345,buitrago
cesar,98765,san
alex,4556,ova

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

id   name   apellido   tel
1    aniel  buitrago   12345
2    esar   san        98765
3    lex    ova        4556

怎么办?

1 个答案:

答案 0 :(得分:5)

根据documentation, you need to use the EXPRESSION keyword显示该值纯粹来自指定的表达式,并且不依赖于数据文件中的任何内容:

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 ',' )

...插入:

        ID NAME       TEL        APELLIDO
---------- ---------- ---------- ----------
         1 daniel     12345      buitrago
         2 cesar      98765      san
         3 alex       4556       ova

目前假设ID是数据文件中的一个字段,并且由于您没有指定数据类型,因此defaulting to charsize 1,这是第一个字符你真正的第一场。