Solved

automated query in oracle

Posted on 2010-09-19
12
554 Views
Last Modified: 2012-05-10
I've just installed the oracle sql developer and have connected to our remote database. I have some queries I need to use to collect some data and copy to some excel spread sheets. I'm looking to automate this process and am new to oracle, but, have done this with other DB like access and sql server (using cmd line commands).
So, looing for ideas on how to proceed. Read a little about sql*plus, but, haven't done anything yet.

thanks
alan
0
Comment
Question by:avoorheis
  • 5
  • 3
  • 2
  • +2
12 Comments
 
LVL 11

Accepted Solution

by:
jgiordano earned 100 total points
ID: 33712672
you could use windows batch processing to run a sql plus query and schedule it.

http://www.oracle-base.com/articles/misc/OracleShellScripting.php
0
 

Author Comment

by:avoorheis
ID: 33712874
thanks, that sounds good, now I just have to find where to d/l sql plus. Didn't see it at your link or find in the several oracle pages i searched. I've installed the sql deverloper, but, I don't know if I need something else installed. Can it be started from a dos command prompt?
0
 
LVL 11

Expert Comment

by:jgiordano
ID: 33712885
is sql developer from oracle? if so then it might contain sqlplus

do a search for the sqlplus binary or download the oracle db from oracle for windows and only install the client tools when prompted instead of the full database.
0
 
LVL 10

Assisted Solution

by:ravindran_eee
ravindran_eee earned 100 total points
ID: 33713307
You can go this in multiple ways.. Following is what I generally used to do!!

If the excel is very sensitive to formatting and all, you can use Excel VBA macros. You can write some VB code to get data from Oracle database and populate it in your excel spreadsheet whatever way you want. This is very flexible and you don't have to do even the formatting manually.
http://www.adp-gmbh.ch/blog/2007/01/24.php

Another thing you can do is develop an Oracle stored procedure and schedule it using Oracle jobs. The stored procedure would just spool out the contents to a csv file or text file. You can then manually copy paste them in your excel spreadsheets
http://www.devshed.com/c/a/Oracle/Writing-to-Text-Files-in-Oracle-PLSQL/
http://www.dba-oracle.com/tips_oracle_dbms_job.htm

Another option is what has been discussed already. You can write a simple SQL script (a file named .sql) which would use spool command of Oracle to generate the csv or text file. It will have to be called from a shell script (in case of UNIX) or DOS batch file (in case of Windows). Then make use of native OS scheduling feature to execute it periodically
http://www.computing.net/answers/dbase/oracle-spool-output-to-file-/37.html

Let me know if there are any questions! Based on your requirement, you can choose one of the options. There could be other as well!!
0
 
LVL 7

Expert Comment

by:sumit2906
ID: 33713828
I use a script like this for similar purpos. create a batch script, which can be sceduled or executed manually, which calls a sql script to spool data, I use a saperator, so that easily convert the file in excel.
***my_script.bat

sqlplus user/pwd@orcl11 @my_script.sql



***my_script.sql

set colsep |

set feedback off;

SET HEADS OFF;



spool file_name.csv

Prompt some_text;

select * from my_tables;



Prompt some_other_text;

select * from tab2;

spool off;

Open in new window

0
 

Assisted Solution

by:mnshah9
mnshah9 earned 100 total points
ID: 33714055
Hi

Best option to create file automatically and that should also open in excel you need to create CSV file.

CSV file will easily open in Excel and we can generate CSV file easily

like if u have emp table and it contains id and name then use below query and fire same from SQL promot

connect to Database using SQL Plus
spool emp.csv
select id || ',' || name from emp;

Above statement will generate CSV file and same can be open into excel



0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 

Author Comment

by:avoorheis
ID: 33717207
thanks everyone, will take a bit to digest this.

But, in the mean time, I did find sqlplus and I think the issue I'm having with that is the same I'm having with the ODBC. When I'm trying to config the ODBC, it's asking for a TNS Service Name during the ODBC driver configuration, which I don't have (I used an LDAP Server when setting up the connection in the Oracle SQL Developer). And, when starting sqlplus, it errors with "ORA-12560: TNS:protocol adapter error" after I enter user-name and password.

I did find a tnsnames.ora file...maybe I need to enter info in there, right?
Will that help with the ODBC connection, or, will I need the correct tns name to enter into the ODBC configuration?
0
 
LVL 7

Assisted Solution

by:sumit2906
sumit2906 earned 200 total points
ID: 33717489
you need tnsnames.ora file, if your database is running on a different machine. You will need database host name/IP address, service name/SID and listner port (default 1521) to configure tnsnames file.
You can assign any alias which you will have to use while connecting:
sqlplus user/pwd@tnsalias
0
 

Author Comment

by:avoorheis
ID: 33717650
ok, working on figuring out how to fill in tnsnames.ora. Doesn't seem like devleoper connection info maps to the tns:
developer connection info is:
Connection Name: Tst Srvr1 (that's just an alias, right?)
user: xxx
password: xxx
role: default, connection type: LDAP, OS Authentication Kerberow Auth. and Proxy Conn. not checked
LDAP Server: oid.xxx.com:123:456   (not sure what this is)
DB Service: POST.xxx.com  (not sure what this is)

So, need to fill in tnsnames.ora
(ADDRESS = (PROTOCOL = TCP)     ---leave that as is?
(HOST = <hostname or IP>)   ---will oid.xxx.com:123:456 work?
(PORT = <port>)   ---no clue here
not sure on the following, except service might be POST.xxx.com
(CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = <database service name>)

then, does it matter wher this file is saved?
0
 
LVL 7

Assisted Solution

by:sumit2906
sumit2906 earned 200 total points
ID: 33717731
In your case, it will be like this:
tstsrvr1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <hostname or IP>)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = POST.xxx.com)
    )
  )

you should be able to ping the hostname or IP, the default port is 1521, it could be different.
Also, the file location is fixed, it is under oracle_home\network\admin directory. You can also use command tnsping test to see where is it expecting the file.

The best way is to take the tns entry from your server machine, and use it.

Also, this is not a related question, so better to open a new question, that way you will get more responses.
0
 

Author Comment

by:avoorheis
ID: 33717844
0
 

Author Comment

by:avoorheis
ID: 33734627
turned out to be several things, one was that I only had the instant client installed, there was old info in the tnsnames file plus some typos on my part...thanks again for all the feedback, it was helpful.
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Join & Write a Comment

Subquery in Oracle: Sub queries are one of advance queries in oracle. Types of advance queries: •      Sub Queries •      Hierarchical Queries •      Set Operators Sub queries are know as the query called from another query or another subquery. It can …
How to Unravel a Tricky Query Introduction If you browse through the Oracle zones or any of the other database-related zones you'll come across some complicated solutions and sometimes you'll just have to wonder how anyone came up with them.  …
This video shows syntax for various backup options while discussing how the different basic backup types work.  It explains how to take full backups, incremental level 0 backups, incremental level 1 backups in both differential and cumulative mode a…
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now