Automatically inserting column names for table in TOAD for Oracle - oracle

I am looking for a way to automatically insert column names in TOAD for Oracle to make it easier for writing queries.
Ideally, I would like to type something like the following:
select * from myTable;
Then, when I right-click on *, I would have the option to insert all known column names for that table.
Is it possible in Toad?

Press F4 on that the selected table name, and in the schema browser, select the Columns tab, then select all columns. Then drag the selection, do not copy&paste, back into the editor, and you have your comma separated column names.

select column_name || ','
from all_tab_columns
where table_name = 'SOME_TABLE'
and owner = 'SOME_OWNER'
order by column_id;
The right click on output of field names in data grid and select Export Data (to clipboard as tab delimited, don't include quoting or column headers).
Now copy/paste where u need it. Nice thing is that you can:
Use this SQL in any IDE, not just Toad
Modify output if needed, as I do in triggers to add ':old' or ':new' prefixes to each field for example, or change order.

It is also possible to generate the statement from the schema browser-> columns tab
Select the columns you want, then right click and select the 'generate statement' menu item,then select the command you want to generate (Select/Insert/Delete).
The script then gets copied to clipboard, for you to paste at your leisure.

Related

Selecting oracle column header

I've been browsing and to no avail, I can't find any information on how to select/show only the column header. My objective is to select only column header . I've uploaded a picture for better illustration on my objective. In the picture shown, I'm trying to only select and display the one ive highlighted in the red box.
Oracle table:
The only information I found from the net is selecting an individual column, and with that. It will display the data as well which is not my objective. my main objective is to only select column headings.
In Oracle APEX SQL Workshop you can describe a table with this command:
desc table_name
If you're using a query, you can click on the "Describe" tab below the query and above the result grid.
I had a similar requirement, so in page designer I plugged in a "Where Clause = Sysdate-1"
you can use select and null to pick columns and use alias to name them
select null AS column_name,null AS column_name
from TABLE_NAME

sql*plus is truncating the columns names according to the values in that columns

I have two broad questions:
Q1. Are executing the lines of code in Oracle SQL Developer and executing the same code in sqlplus command prompt same things?
(reason I ask this that I heard that not all the sqlplus commands are executable in SQL Developer. If answer to above question is yes then please then few useful links will help).
Q2. I am spooling the results of a sql query to a .csv file, but the thing is that columns names are truncated according the maximum length of the values in that column.
My code is:
set colsep ","
spool C:\Oracle\sample.csv
select * from acct_clas_rule;
spool off;
Output of above code is (middle column is having null values)
ABCD_,ABCD_,ABC
-----,-----,---
AB , ,WSD
ABCD , ,WSD
ABCD , ,WSD
SG , ,WSD
KD , ,WSD
WD , ,LKJ
KLHGF, ,LKO
WSDFG, ,LOK
WSDF , ,LKO
WS , ,GH
In above output, columns names have been truncated. I want full names of the columns to be displayed. Can anyone help?
I have seen the question in this link, but I didn't understand how to apply the answers provided there as there was no particular example cited. I am new to these things so I couldn't understand.
Original names of my columns (from left to right in above table) are :
ABCD_DFGT_SDF, ABCD_EDF_GH, ABCD_DFRE
PS -
1. I am using Oracle SQL developer to run sqlplus commands. I think because of which few of my commands are not working (like set underline, set linesize etc.).Please let me know if this is the case. I actually want remove those underlines beneath the columns names.
2. Also let me know that whether you answer is applicable to Oracle SQL Developer or sqlplus.
Thank You
There are a couple of things you can do, in addition to #JChomel's approach - that will work in either SQL Develoepr or SQL*Plus, while these suggestions are specific to SQL Developer.
Let's start with a dummy query based on a CTE to get something like your situation:
set colsep ","
with acct_clas_rule (abdc_1, abcd_2, abcd_3) as (
select cast('AB' as varchar2(5)), cast(null as varchar2(5)), cast('WSD' as varchar2(4)) from dual
union all select 'ABCD', null, 'WSD' from dual
-- ...
union all select 'WS', null, 'GH' from dual
)
select * from acct_clas_rule;
When run as a script in SQL Developer (from the document+arrow icon, or F5) the output is:
ABDC_,ABCD_,ABCD
-----,-----,----
AB , ,WSD
ABCD , ,WSD
WS , ,GH
If you change the query to include the SQL Developer-specific formatting hint /*csv*/ then you get the output you want:
select /*csv*/ * from acct_clas_rule;
"ABDC_1","ABCD_2","ABCD_3"
"AB","","WSD"
"ABCD","","WSD"
"WS","","GH"
except that the strings are all enclosed in double-quotes, which might not be what you really want. (It depends what you're doing with the spooled file and whether any of your string values contain commas, which would confuse Excel for instance).
With more recent versions of SQL Developer you can get exactly the same result without modifying the query using the sqlformat option:
set sqlformat csv
select * from acct_clas_rule;
but again you get the double-quotes. You could change the double-quotes to different enclosure characters, but that probably doesn't help.
A different approach is to use the built-in export tools instead of spool. If you run the query as a statement (green 'play button' icon, or control-enter) then rather than appearing in the Script Output panel, a new Query Result panel will open next to that, showing the results as a grid.
If you right-click on the results you'll get a contextual menu, and choosing Export... from that will give you a wizard to export the results in a format of your choice, including CSV:
You can leave the left and right enclosures as double-quotes to get the same results as the options above, except that null values use the word 'null' instead of an empty string:
"ABDC_1","ABCD_2","ABCD_3"
"AB",null,"WSD"
"ABCD",null,"WSD"
"WS",null,"GH
or you can change them, or remove them by choosing 'none', which gives you:
ABDC_1,ABCD_2,ABCD_3
AB,null,WSD
ABCD,null,WSD
WS,null,G
#thatjeffsmith has commented on how to change the null-replacement text for the /*csv*/ approach. For export it looks like having the word 'null' might have been a bug in 17.2.0; in 17.3.1 that does not appear, and instead you see:
ABDC_1,ABCD_2,ABCD_3
AB,,WSD
ABCD,,WSD
WS,,GH
or enclosed empty strings ("") if you leave the enclosures set.
Q1: TI'm not an expert of SQL Developer. There might be a mode like "command line" or something where you could get similar result, but unsure.
Q2: You have to set the right option to sqlplus: here is a trick I know of (it will also remove the --- --- --- that will cause other issue):
SET HEADING OFF`, to avoid column name to be printed
Union all the column names at the beginning of your script:
set colsep ","
spool C:\Oracle\sample.csv
select 'ABCD_DFGT_SDF', 'ABCD_EDF_GH', 'ABCD_DFRE' from dual
UNION ALL
select * from acct_clas_rule;
spool off;
use the sql plus set command -----> set underline off

how to fetch the column name in related table in Toad?

how to fetch the column name in related table in Toad? For example,
Table Name: User;
Column name: Usr_code
Select * from User where u
after where condition, related column should be coming in drop down? send the shortcut?
Do you mean you want to know what are the columns of table User?
From Oracle metadata:
select * from all_tab_columns where table_name ='USER';
From Toad UI: You should use an alias, then shortcut for autocompletion is CTRL+space if I remember correctly. So start with the below and use kbd shortcut after you entered the last dot .:
Depending on the TOAD configuration, it can also be CTRL+.
Select * from User u where u.<ctrl>+<space>
or
Select * from User u where u.<ctrl>+<.>
To fetch the columns names from a table, I use the following:
SELECT * FROM [table name] WHERE ROWNUM < 1;

While exporting data from Oracle PLSQL to Excel, format issue is coming

I am trying to export data from Oracle PLSQL to Excel.
The data type of one of the column is VARCHAR2.
The Column conatins value like 00798019859217.
But after exporting, the value in excel is something like this 7.9802E+11.
PLease let me know how to resolve this and the reason for this format issue.
Thanks in advance.
Do the following:
Select the column with single quotes, say
SELECT ("'" || COLUMN_NAME) AS COLUMN_NAME, OTHER_COLUMNS FROM MY_TABLE
Output will be like:
'ABC0157976
'00798019859217
Export the output to an excel.In excel "A" column values will be
'ABC0157976
00798019859217 (Single quote will not be visible for number only values)
Select the entire "A" row and clear all single quotes with replace all option. You will get final excel as.
ABC0157976
00798019859217
Since it is a text field and non-numeric characters are also expected to be present, the step#3 is required. If it is going to be only numeric characters, then step #3 can be ignored.
This is happening due to excel where the number auto casted. As #HamidP said try exporting as csv and check with opening in notepad or text, and check whether the number displaying fully or not. If so then you can open the same in Excel with small options change such
Right click the cell and click format option and make it cell format as text and then save the excel.

Not able to filter column in Sql Developer

I am trying to filter the result using sql developer. I got the process to filter the record as right click on column header and select "Columns" option. but In my sql developer there is no option like columns.
The best way to do this, is to use the filter input line, not the column filter.
And then just type: column_name like '%value_to_search%'
Example: NAME like '%john%'
In SQL Developer Version 3.2.20.10, after running a query you can bring up filter on column dialogue box by one of two methods:
Click on the column heading (EMPLOYEE_ID in the screen shot below)
Right click on column heading (Again EMPLOYEE_ID) and select "Filter Column"

Resources