我需要使用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)"
)
有什么建议吗?
答案 0 :(得分:1)
第二个想法最终起作用,这是实际的工作语法:
LOAD DATA
INFILE *
APPEND INTO TABLE trans_req
( student_id POSITION(1:9),
inst_id CHAR(600) "SUBSTR(:inst_id, -8, 8)"
)