Ist es möglich für Oracle sqlldr zu akzeptieren, einen TNS-Eintrag als eine Instanz qualifier in Oracle 10 und 11?
Ist es möglich, verwenden Sie einen vollständig qualifizierten TNS-Eintrag mit sqlldr gebündelt mit Oracle 10/11?
Beispielsweise in SQLPlus:
sqlplus user/password@(description=(address=(host=localhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl))) @script.sql
Aber mit sqlldr (SQL-Loader) scheint es Probleme mit den TNS-Eintrag direkt. Speziell:
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'
Hier ist die Fehlermeldung produziert:
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
Versuch zu Kapseln, die TNS-Eintrag in Anführungszeichen, erzeugt den gleichen Fehler.
Hatte einen Blick auf die sqlldr Dokumentation, und versucht, verwenden Sie die 'userid' command-line-argument ohne Erfolg. Speziell:
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
Macht es Sinn, dass Oracle würde hoffen, zwingen den Benutzer zu einer lokalen Instanz zu mildern-I/O-in pushen von Daten auf einem remote-host. Aber die Abweichung in der unterstützten syntax ist nicht so intuitiv. Jemand anderes ähnliche Probleme erleben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
fwiw, dieser Kerl gepostet, eine Lösung für dieses problem
http://www.simplemancomplexmachine.com/2011/10/sqlldr-one-liner-to-remote-database.html
Beachten Sie, dass in der ursprünglichen blog-post er hatte ein Leerzeichen vor dem '/dbpass'. Dies bewirkt, dass sqlldr zu geben, den Fehler:
LRM-00112: mehrere Werte sind nicht zulässig für den parameter 'userid'
Haben Sie versucht, die ezconnect-format eine Verbindung zu einem remote-db mit sqlldr ?
e.g:
finden Sie unter: http://www.orafaq.com/wiki/EZCONNECT
sqlldr
zeigt das Passwort an niemanden im system, die läuftps -ao args
also ich war auf der Suche nach einem Weg, um zu vermeiden, dass als gut.Aussieht, müssen Sie escape-Zeichen wie (, ) und = mit dem escape-Zeichen \, wie in hier
Können Sie auch versuchen:
Kelvin ist 100 % Richtig. Es war für mich
FÜHREN SIE SQL-LOADER UNTER BEFEHL, OHNE DASS SIE EINEN TNS-EINTRAG
sqlldr userid/password@//host:port/SERVICE_NAME bad='/PFAD/DATEINAME.bad' Kontrolle='/PFAD/DATEINAME.ctl' data='/PFAD/DATEINAME.csv' log='/PFAD/DATEINAME.log' direct='true'
Das einzige, was für mich gearbeitet wurde mit zwei Arten von Zitaten:
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'
Einzelnen zitieren die ganzen nicht-so-ezconnect für mich gearbeitet in einer DOS-batch-Skript und auf der Kommandozeile: