0

我需要使用 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)"
)

有什么建议么?

4

1 回答 1

1

第二个想法最终奏效了,这是实际的工作语法:

LOAD DATA
INFILE *
APPEND INTO TABLE trans_req
( student_id POSITION(1:9), 
  inst_id CHAR(600) "SUBSTR(:inst_id, -8, 8)"
)
于 2013-06-19T15:56:59.437 回答