Возможно ли использовать полностью квалифицированную запись TNS с использованием SQLLDR, в комплекте с Oracle 10/11?
, например, в SQLPLUS:
sqlplus user/password@(description=(address=(host=localhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl))) @script.sql
, но с использованием SQLLDR (SQL Loader ) Похоже, что проблемы с использованием записи TNS напрямую. В частности:
sqlldr user/password@(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 и попытался использовать аргумент командной строки «UsiliD» безрезультатно. В частности,:
sqlldr userid='user/password@(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 'password@(' 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
имеет смысл, что Oracle будет надеяться заставить пользователю к локальному экземпляру, чтобы уменьшить ввод / вывод в толкании данных на удаленный хост. Но отклонение в поддерживающем синтаксисе не так интуитивно. Кто-нибудь еще испытывает подобные проблемы?