Re: [External] : sqlcl Copy

  • From: "Charlotte Hammond" <dmarc-noreply@xxxxxxxxxxxxx> ("charlottejanehammond")
  • To: angelo <angelolistas@xxxxxxxxx>
  • Date: Thu, 23 Sep 2021 15:20:54 +0000 (UTC)

 Hi Angelo,
I believe the message "A missing FROM or TO clause uses the current SQL*Plus 
connection" means that TO is *not* mandatory (provided there is a FROM). 
(Interesting it mentions "SQL*Plus" even though this is SQLcl - presume ported 
code?)
Anyway, just to be sure, I tried it specifying both FROM and TO but 
unfortunately the error message was the same as before.
ThanksCharlotte

    On Thursday, September 23, 2021, 04:08:51 PM GMT+1, angelo 
<angelolistas@xxxxxxxxx> wrote:  
 
 Hi,  me again
Charlotte
Look at this example below as a complementation   (I made a mistake with the 
syntax in my before e-mail)
SQL> copy from  
/@(DESCRIPTION=(LOAD_BALANCE=OFF)(FAILOVER=ON)(CONNECT_TIMEOUT=10)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=source_host1))(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=source_host2)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=source_host3)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=SOURCEDB)))
 TO @DESTDB create test_table USING select * from dual;


On Thu, 23 Sept 2021 at 11:54, angelo <angelolistas@xxxxxxxxx> wrote:

Hello,
@Charlotte

Could the TO parameter be missing ?  Let´s analyze the error message and the 
syntax from the command.
"A missing FROM or TO clause uses the current SQL*Plus connection"
I think TO is mandatory, even if using a create table. 
"usage: COPY FROM <db> TO <db> <opt> <table> { (<cols>) } USING <sel>"
again, it could be:  COPY FROM @DB1  TO   @db2  using  create test_table select 
* from dual;
In all your examples, the TO parameter is not there." SQL> copy from  
/@(DESCRIPTION=(LOAD_BALANCE=OFF)(FAILOVER=ON)(CONNECT_TIMEOUT=10)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=source_host1))(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=source_host2)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=source_host3)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=SOURCEDB)))
  create test_table using select * from dual;  "
Maybe you can try it, obeying the syntax   from "usage: COPY FROM <db> TO <db> 
<opt> <table> { (<cols>) } USING <sel>"
SQL> copy from  
/@(DESCRIPTION=(LOAD_BALANCE=OFF)(FAILOVER=ON)(CONNECT_TIMEOUT=10)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=source_host1))(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=source_host2)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=source_host3)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=SOURCEDB)))
  TO @DESTDB (or @description whatever)   USING create test_table using select 
* from dual;

So, you can try it.
regards,
angelo

On Thu, 23 Sept 2021 at 06:00, Charlotte Hammond <dmarc-noreply@xxxxxxxxxxxxx> 
wrote:

 Thanks Jeff.
I've tried both without success.   Here's the commands and output I've tried 
(same result both with and without the -oci flag):
SQL> connect /@SOURCEDB   <-- Checking passwordless connection with wallet to 
source 
Connected.
SQL> connect /@DESTDB     <-- Passwordless connection with wallet to dest
Connected.
SQL> copy from /@SOURCEDB create test_table using select * from dual;

usage: COPY FROM <db> TO <db> <opt> <table> { (<cols>) } USING <sel>
<db>   : database string, e.g., hr/your_password@d:chicago-mktg
<opt>  : ONE of the keywords: APPEND, CREATE, INSERT, REPLACE,
APPEND_BYTE,  CREATE_BYTE or REPLACE_BYTE
<table>: name of the destination table
<cols> : a comma-separated list of destination column aliases
<sel>  : any valid SQL SELECT statement
A missing FROM or TO clause uses the current SQL*Plus connection.
or
SQ>  connect 
/@(DESCRIPTION=(LOAD_BALANCE=OFF)(FAILOVER=ON)(CONNECT_TIMEOUT=10)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=source_host1)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=(HOST=source_host2)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=(HOST=source_host3)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=SOURCEDB)))
Connected.
SQL> connect 
/@(DESCRIPTION=(LOAD_BALANCE=OFF)(FAILOVER=ON)(CONNECT_TIMEOUT=10)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=dest_host1)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=dest_host2)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=DESTDB)))
Connected.
SQL> copy from  
/@(DESCRIPTION=(LOAD_BALANCE=OFF)(FAILOVER=ON)(CONNECT_TIMEOUT=10)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=source_host1))(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=source_host2)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=source_host3)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=SOURCEDB)))
 create test_table using select * from dual;
usage: COPY FROM <db> TO <db> <opt> <table> { (<cols>) } USING <sel>
<db>   : database string, e.g., hr/your_password@d:chicago-mktg
<opt>  : ONE of the keywords: APPEND, CREATE, INSERT, REPLACE,
APPEND_BYTE,  CREATE_BYTE or REPLACE_BYTE
<table>: name of the destination table
<cols> : a comma-separated list of destination column aliases
<sel>  : any valid SQL SELECT statement
A missing FROM or TO clause uses the current SQL*Plus connection.







Thank You!Charlotte



    On Wednesday, September 22, 2021, 11:30:25 PM GMT+1, Jeff Smith 
<jeff.d.smith@xxxxxxxxxx> wrote:  
 
 
I’m honestly not sure..in your copy command are you using a fully qualified 
jdbc URL that contains all the necessary wallet info, or are you relying on an 
OCI (thick) connection for an $ORACLE_HOME that already has TLS configured?

Jeff
 
  
 
From: oracle-l-bounce@xxxxxxxxxxxxx <oracle-l-bounce@xxxxxxxxxxxxx>On Behalf Of 
Charlotte Hammond
Sent: Wednesday, September 22, 2021 6:12 PM
To: oracle-l@xxxxxxxxxxxxx
Subject: [External] : sqlcl Copy
 
  
 
Hello Everyone,
 
  
 
Just a quick question - is the Oracle wallet supported by the COPY command in 
SQLcl?   I can't get it to work but I'm not sure if it's not supported or if 
I'm just doing something wrong.
 
  
 
Thank You!
 
Charlotte
   

  

Other related posts: