Generate sql statement using shell scripting


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Generate sql statement using shell scripting
# 8  
Old 02-01-2016
How about
Code:
awk -F, -v SQ="'" '
FNR == NR       {if (!/^#/) C[NR] = $0
                 next
                }
                {print "UPDATE EMP SET "
                 for (c in C) print "\t" C[c] " = " SQ $c SQ ","
                 print  "WHERE empno = " $1 ";"
                 print "commit;"
                }
' file[12]
UPDATE EMP SET 
    ename = 'KING',
    job = 'PRESIDENT',
    salary = '2000',
    deptno = '10',
WHERE empno = 7839;
commit;
UPDATE EMP SET 
    ename = 'BLAKE',
    job = 'ANALYST',
    salary = '1000',
    deptno = '13',
WHERE empno = 7840;
commit;
UPDATE EMP SET 
    ename = 'CLARK',
    job = 'PROGRAMMER',
    salary = '500',
    deptno = '13',
WHERE empno = 7841;
commit;
UPDATE EMP SET 
    ename = 'JONES',
    job = 'PROGRAMMER',
    salary = '550',
    deptno = '11',
WHERE empno = 7842;
commit;
UPDATE EMP SET 
    ename = 'SCOTT',
    job = 'ANALYST',
    salary = '550',
    deptno = '11 ',
WHERE empno = 7843;
commit;

Please note that the where - clause is using an invariable, constant column name as you didn't supply any means to identify the column to use.
This User Gave Thanks to RudiC For This Post:
# 9  
Old 02-02-2016
Thank you so much Rudic ! Its working as expected. I'm testing the code with more files and let you know if i find any issues.

Thanks for ur help!

---------- Post updated 02-02-16 at 01:43 PM ---------- Previous update was 02-01-16 at 04:13 PM ----------

Rudic,
Thanks for your help ! I found one minor issue while testing the code. Currently i'm getting output like this. I need to remove last comma before WHERE in SQL update . My sql will not work if there is a comma in the end of SET command.
Code:
UPDATE EMP SET 
    ename = 'JONES',
    job = 'PROGRAMMER',
    salary = '550',
    deptno = '11',
WHERE empno = 7842;

desired output:
Code:
UPDATE EMP SET 
    ename = 'JONES',
    job = 'PROGRAMMER',
    salary = '550',
    deptno = '11'
WHERE empno = 7842;

I'm trying other option to remove last comma before WHERE in SQL update using sed command. Please assist?
Thanks
# 10  
Old 02-02-2016
It's a bit difficult to remove chars from a line already printed, so I'd propose to do the whole thing in one single line. Would this do?
Code:
awk -F, -v SQ="'" '
FNR == NR       {if (!/^#/) C[NR] = $0
                 next
                }
                {DL = ""
                 printf "UPDATE EMP SET"
                 for (c in C)   {printf "%s %s = %s%s%s", DL, C[c], SQ, $c, SQ
                                 DL = FS
                                }
                 printf  " WHERE empno = %s;\n", $1
                 print "commit;"
                }
' file[12]
UPDATE EMP SET ename = 'KING', job = 'PRESIDENT', salary = '2000', deptno = '10' WHERE empno = 7839;
commit;
UPDATE EMP SET ename = 'BLAKE', job = 'ANALYST', salary = '1000', deptno = '13' WHERE empno = 7840;
commit;
UPDATE EMP SET ename = 'CLARK', job = 'PROGRAMMER', salary = '500', deptno = '13' WHERE empno = 7841;
commit;
UPDATE EMP SET ename = 'JONES', job = 'PROGRAMMER', salary = '550', deptno = '11' WHERE empno = 7842;
commit;
UPDATE EMP SET ename = 'SCOTT', job = 'ANALYST', salary = '550', deptno = '11 ' WHERE empno = 7843;
commit;

---------- Post updated at 19:01 ---------- Previous update was at 19:00 ----------

I think SQL does accept one line UPDATE statements, doesn't it?

Last edited by RudiC; 02-02-2016 at 02:13 PM..
This User Gave Thanks to RudiC For This Post:
# 11  
Old 02-02-2016
Thanks Rudic !

Yes, the SQL does accept one line UPDATE statements. I tried your code with few columns and its working as expected. I think the sql will work even if we have one line update statements with more columns ( ex: 30 to 40). if there is a problem i can use sed command to remove the last comma after we generate the update statement.

Thank u so much for your help !
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell scripting with case statement

Foe example we have three environments int,qa and prod.Each environment has some number of servers. int=Server1,Server2,Server3 qa=Server4,Server5,Server6 prod=Server7,Server8,Server9 echo "Enter the Environment i.e int,qa,prod" read env case $env in int) ## Need command where all the... (9 Replies)
Discussion started by: nareshreddy443
9 Replies

2. Shell Programming and Scripting

Using shell to generate case statement

Hi Gurus, I have a very weird requirement and have no clue to resolve the issue. please help me get out this difficulty below two tables, table1 contains the column name. D means this column used for the rule. for example: rule 0 is all columns have value, rule1 is col3 and col7 have no value.... (2 Replies)
Discussion started by: Torhong
2 Replies

3. Shell Programming and Scripting

How to create SQL statement out of data using shell script?

Table TAB1 contains following example data (its a tree sitting in table data format & its driven based CHILD & PARENT column pick the RULE condition to generate the below SQL: CHILD PARENT SS MID MNM VNM RULE FLG 1 ? S1 ? ? V1 rule004 I 2 1 S1 ? ? V1 0 Z 3 1 S1 ? ? V1 1 Z ... (6 Replies)
Discussion started by: gksenthilkumar
6 Replies

4. Shell Programming and Scripting

Korn shell script - SQL statement challenges

Hi scripting experts. I have some coding challenges that I'm hoping you can help me out. I have one file#1 that contains the following sql statement that spans over multiple lines: sql Select /*+ use_has(a,b) */ * from customer a, customer_address b where a.id = b.id... (1 Reply)
Discussion started by: pchang
1 Replies

5. UNIX for Dummies Questions & Answers

BASH Shell Scripting: If, Then Statement

I'm having trouble trying to create a BASH shell script. I want the user to input a command "cat file_name.c" and then the shell script will delete all comments "/* */" from file_name.c else exit. So far I have this: #!/bin/bash read "cat file" // User will input command cat... (7 Replies)
Discussion started by: inkjoy00
7 Replies

6. Linux

Shell Script to generate Dynamic Param file Using SQL Plus Quey

Hi All, Can anyone give me Shell script sample script to generate Param file by Reading Values from SQL Plus query and it should assign those values to variables like.. $$SChema_Name='ORCL' Thanks in Advance... Srav... (4 Replies)
Discussion started by: Sravana Kumar
4 Replies

7. Shell Programming and Scripting

Unix shell command output to a sql statement

Can i do this Say one command sed 's/:*/ /g' $summf is returning C1234 C2345 C3434 some no of rows, now this ouput i have to insert it into a DB table how do i do this?? (2 Replies)
Discussion started by: depakjan
2 Replies

8. Shell Programming and Scripting

generate tabular output from an input text file in unix shell scripting

Hi, I have the output (as below) which i want it to be in a table. For e.g. space utilization in PSE on path /logs is 0% space utilization in PSE on path /logs/tuxedo/tuxlsp is 16% space utilization in PSE on path /ldvarlsp/lsp/log is 37% space utilization in PSE on path /home is 6%... (7 Replies)
Discussion started by: pkbond
7 Replies

9. Shell Programming and Scripting

using SELECT sql statement in shell script

Hi there I have a database on a remote box and i have been using shell script to insert data into it for example, i could have a script that did this SN=123456 n=server1 m=x4140 sql="UPDATE main SET hostname='$n',model='$m' WHERE serial='$SN';" echo $sql |/usr/sfw/bin/mysql -h... (4 Replies)
Discussion started by: hcclnoodles
4 Replies

10. Shell Programming and Scripting

Sql with shell scripting

Hi, I want to extract data from database table to a flat file using shell scripting. For loading data from file to a table, I had used SQL Loader. How can I do the vice versa using shell scripting. Thanks in advance (3 Replies)
Discussion started by: sendhil
3 Replies
Login or Register to Ask a Question