我有一個 control.ctl 檔案,我正在使用 SQL*LOADER 將這些資料加載到表中。
LOAD DATA
INFILE 'data_for_insert.csv'
INSERT INTO TABLE TABLE_NAME
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
COL1,
COL2,
NEXT_MONDAY EXPRESSION "SELECT NEXT_DAY(SYSDATE, 'MONDAY') FROM dual",
TODAY SYSDATE
)
收到錯誤:
Record 16: Rejected - Error on table TABLE_NAME, column NEXT_MONDAY .
ORA-00936: missing expression
我找不到問題所在,因為該運算式SELECT NEXT_DAY(SYSDATE, 'MONDAY') FROM dual在我在 SQL Developer 中運行時有效。如果我去掉那個運算式,它就可以作業,所以其余代碼就沒有問題了。有人可以幫忙嗎?謝謝!
uj5u.com熱心網友回復:
最后這個解決方案似乎已經解決了問題。我在雙引號內添加了括號。
NEXT_MONDAY EXPRESSION "(SELECT NEXT_DAY(SYSDATE, 'MONDAY') FROM dual)"
uj5u.com熱心網友回復:
如果這是一個運算式,則使用運算式,而不是整個查詢;并不是說它不起作用(您發現它確實有效),只是沒有必要。
控制檔案:
load data
infile *
replace
into table test
fields terminated by ',' optionally enclosed by '"'
trailing nullcols
(col1,
col2,
next_monday expression "next_day (sysdate, 'MONDAY')",
today sysdate
)
begindata
1,2
3,4
測驗:
SQL> $sqlldr scott/tiger control=test9.ctl log=test9.log
SQL*Loader: Release 11.2.0.2.0 - Production on Pet Stu 26 21:24:37 2021
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Commit point reached - logical record count 1
Commit point reached - logical record count 2
SQL> select * from test;
COL1 COL2 NEXT_MONDA TODAY
---------- ---------- ---------- ----------
1 2 29.11.2021 26.11.2021
3 4 29.11.2021 26.11.2021
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/368559.html
