SQLLDR相对于行尾的位置

时间:2013-06-19 15:33:53

标签: sql oracle

我需要使用SQLLDR将一些数据加载到Oracle中。数据是可变长度的行。我需要将前9个字符拉入一列,将最后8个字符拉入第二列。我可以直接在SQLLDR中执行此操作,还是需要单独解析数据?

我在想这样的事情:

LOAD DATA
INFILE *
APPEND INTO TABLE trans_req
( student_id POSITION(1:9), 
  inst_id POSITION(-8:)
)

但我不认为语法是正确的。还考虑使用一些SQL函数来获取行的结尾,但不确定SQLLDR是否会抓取所有内容到EOL,或者只是填充列中的足够字符(8)。

LOAD DATA
INFILE *
APPEND INTO TABLE trans_req
( student_id POSITION(1:9), 
  inst_id POSITION(*) "SUBSTR(:inst_id, -8, 8)"
)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

第二个想法最终起作用,这是实际的工作语法:

LOAD DATA
INFILE *
APPEND INTO TABLE trans_req
( student_id POSITION(1:9), 
  inst_id CHAR(600) "SUBSTR(:inst_id, -8, 8)"
)