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)
做什么?
根据文档,您需要使用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,这是消耗你的真实场的第一个字符.