是否可以使用Oracle 10/11捆綁的使用sqlldr的完全合格的TNS條目?Oracle sqlldr是否可以接受TNS條目作爲Oracle 10和11中的實例修飾符?
例如,在sqlplus:
sqlplus user/[email protected](description=(address=(host=localhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl))) @script.sql
但是用SQLLDR(SQL裝載機)也似乎與直接使用TNS條目的問題。具體做法是:
sqlldr user/[email protected](description=(address=(host=localhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl))) bad='bad_file.txt' control='control.ctl' data='data.txt' log='log.txt' direct='true'
這裏是所產生的錯誤消息:
LRM-00116: syntax error at 'address' following '('
SQL*Loader: Release 11.2.0.1.0 - Production on Tue Sep 13 15:41:54 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
SQL*Loader-100: Syntax error on command-line
試圖封裝在引號中TNS條目產生相同的誤差。
看看sqlldr文檔,並試圖使用'userid'命令行參數無濟於事。具體做法是:
sqlldr userid='user/[email protected](description=(address=(host=localhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl)))' bad='bad.txt' control='control.ctl' data='data.txt' log='log.txt' direct='true'
LRM-00116: syntax error at '[email protected](' following '='
SQL*Loader: Release 11.2.0.1.0 - Production on Tue Sep 13 15:44:17 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
SQL*Loader-100: Syntax error on command-line
這是有道理的,甲骨文會希望給用戶強迫到本地實例,以減輕推送數據到遠程主機的I/O。但支持語法的偏差並不那麼直觀。其他人遇到類似的問題?
我得到同樣的錯誤作爲無「TNS :「 – leo