0

SQLLDR を使用して Oracle にデータをロードする必要があります。データは可変長の行です。最初の 9 文字を 1 つの列に、最後の 8 文字を 2 番目の列にプルする必要があります。これを 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

2番目のアイデアは機能しました。実際に機能する構文は次のとおりです。

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 に答える