Sponsored Content
Top Forums Shell Programming and Scripting awk loop - substr and sub query Post 302685615 by viallos on Monday 13th of August 2012 02:49:31 PM
Old 08-13-2012
Thank you both it is working fine but this is not exactly what I was looking for.

This code was only part of my program and I have to use loop rather then proposed code.

I will try to explain better - I'm building sql statement based on the file data. file contain also footer with row count - line starting with '0'

The whole code is

Code:
File_read()
{
     awk -v Batch_SQL=$Batch_SQL -v Load_SQL=$Load_SQL -v data_table=$data_table -v log_table=$log_table '
          /^0/ {H[h++]=substr($0,9,6) + 0} 
          /^1/ {A[a++]=substr($0,2,16)} 
          {P[p++]=substr($0,18,1)}
          {S[s++]=substr($0,19,10)}
          {D[d++]=substr($0,29,11)}
     END{
          if(a!=H[0])
          {
               print "Incorrect number of data rows in input file."
               exit 1
          }
          else if (H[0]!=0)
          {
               printf "%s data row(s) in input file\n",H[0]
               print "INSERT ALL" > Load_SQL
               for(i=0;i<a;i++)
                    printf "into %s (val1, val2, val3, val4) values (%c%s%c,%c%s%c,%c%s%c,%c%s%c)\n",data_table,39,A[i],39,39,P[i],39,39,S[i],39,39,D[i],39 >> Load_SQL
               print "SELECT * from dual;" >> Load_SQL
               print "INSERT ALL" > Batch_SQL
               printf "into %s values (1,%cASD%c,%s,%cRows from file processed%c,SYSDATE)\n",log_table,39,39,H[0],39,39 >> Batch_SQL
          }
          else
          {
               print "No data in input file."
          }
     }' $input_file
}

I don't think I can use proposed solution and when I try to replace a in porposed code to A[a] it doesn't work.

Thanks and sorry for not being more detailed in first place.

---------- Post updated at 01:49 PM ---------- Previous update was at 05:35 AM ----------

Anyone will help with this further?

As a quick workaround I have created trigger on DB table that trim values before input but would love to get it done via unix script.

Thanks

Last edited by zaxxon; 08-14-2012 at 05:15 AM.. Reason: indention is quite helpful
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk substr?

Sorry if this has been posted before, I searched but not sure what I really want to do. I have a file with records that show who has logged into my application: 2003-03-14:I:root: Log_mesg: registered servername:userid. (more after this) I want to pull out the userid, date and time into... (2 Replies)
Discussion started by: MizzGail
2 Replies

2. Shell Programming and Scripting

How to use awk substr ?

Hi all, I have a flatfile I would like to get ext = 7950 , how do I do that ? if ($1 == "CTI-ProgramStart") { ext = substr($9,index($9,"Extension")+11,4); But why it is not working ???? Please help . Thanks (1 Reply)
Discussion started by: sabercats
1 Replies

3. UNIX for Dummies Questions & Answers

awk or substr

i have a variable 200612 the last two digits of this variable should be between 1 and 12, it should not be greater than 12 or less than 1 (for ex: 00 or 13,14,15 is not accepted) how do i check for this conditions in a unix shell script. thanks Ram (3 Replies)
Discussion started by: ramky79
3 Replies

4. Shell Programming and Scripting

awk substr

Hi I have multiple files that name begins bidb_yyyymm. (yyyymm = current year month of file creation). What I want to do is look at the files and where yyyymm is older than 1 month I want to remove the file from the server. I was looking at looping through the files and getting the yyyymm... (2 Replies)
Discussion started by: colesga
2 Replies

5. Shell Programming and Scripting

Help with awk and substr

I have the following to find lines matching "COMPLETE" and extract parts of it using substr. sed -n "/COMPLETE/p" 1.txt | awk 'BEGIN { FS = "\" } {printf"%s %s:%s \n", substr($3,17,3),substr($6,4,1), substr($7,4,1)}' | sort | uniq > temp.txt Worked fine until the numbers in 2nd & 3rd substr... (5 Replies)
Discussion started by: zpn
5 Replies

6. Shell Programming and Scripting

awk substr

HI I am using awk and substr function to list out the directory names in the present working directory . I am using below code ls -l | awk '{ if ((substr($1,1,1)) -eq d) {print $9 }}' But the problem is i am getting all the files and directories listed where as the requirement i wrote... (7 Replies)
Discussion started by: prabhu_kumar
7 Replies

7. Shell Programming and Scripting

Substr with awk

Hi to all, I'm here again, cause I need your help to solve another issue for me. I have some files that have this name format: date_filename.csv In my shell I must rename each file removing the date so that the file name is filename.csv To do this I use this command: fnames=`ls ${fname}|... (2 Replies)
Discussion started by: leobdj
2 Replies

8. Shell Programming and Scripting

awk substr

Hello life savers!! Is there any way to use substr in awk command for returning one part of a string from declared start and stop point? I mean I know we have this: substr(string, start, length) Do we have anything like possible to use in awk ? : substr(string, start, stop) ... (9 Replies)
Discussion started by: @man
9 Replies

9. Shell Programming and Scripting

HELP : awk substr

Hi, - In a file test.wmi Col1 | firstName | lastName 4003 | toto_titi_CT- | otot_itit - I want to have only ( colones $7,$13 and $15) with code 4003 and 4002. for colone $13 I want to have the whole name untill _CT- or _GC- 1- I used the command egrep with awk #egrep -i... (2 Replies)
Discussion started by: georg2014
2 Replies

10. Shell Programming and Scripting

awk and substr

Hello All; I have an input file 'abc.txt' with below text: 512345977,213458,100021 512345978,213454,100031 512345979,213452,100051 512345980,213455,100061 512345981,213456,100071 512345982,213456,100091 512345983,213457,100041 512345984,213451,100011 I need to paste the first field... (10 Replies)
Discussion started by: mystition
10 Replies
INSERT(7)							   SQL Commands 							 INSERT(7)

NAME
INSERT - create new rows in a table SYNOPSIS
INSERT INTO table [ ( column [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) | SELECT query } INPUTS table The name (optionally schema-qualified) of an existing table. column The name of a column in table. DEFAULT VALUES All columns will be filled by null values or by values specified when the table was created using DEFAULT clauses. expression A valid expression or value to assign to column. DEFAULT This column will be filled in by the column DEFAULT clause, or NULL if a default is not available. query A valid query. Refer to the SELECT statement for a further description of valid arguments. OUTPUTS INSERT oid 1 Message returned if only one row was inserted. oid is the numeric OID of the inserted row. INSERT 0 # Message returned if more than one rows were inserted. # is the number of rows inserted. DESCRIPTION
INSERT allows one to insert new rows into a table. One can insert a single row at a time or several rows as a result of a query. The col- umns in the target list may be listed in any order. Each column not present in the target list will be inserted using a default value, either a declared DEFAULT value or NULL. PostgreSQL will reject the new column if a NULL is inserted into a column declared NOT NULL. If the expression for each column is not of the correct data type, automatic type coercion will be attempted. You must have insert privilege to a table in order to append to it, as well as select privilege on any table specified in a WHERE clause. USAGE
Insert a single row into table films: INSERT INTO films VALUES ('UA502','Bananas',105,'1971-07-13','Comedy',INTERVAL '82 minute'); In this second example the last column len is omitted and therefore it will have the default value of NULL: INSERT INTO films (code, title, did, date_prod, kind) VALUES ('T_601', 'Yojimbo', 106, DATE '1961-06-16', 'Drama'); In the third example, we use the DEFAULT values for the date columns rather than specifying an entry. INSERT INTO films VALUES ('UA502','Bananas',105,DEFAULT,'Comedy',INTERVAL '82 minute'); INSERT INTO films (code, title, did, date_prod, kind) VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama'); Insert a single row into table distributors; note that only column name is specified, so the omitted column did will be assigned its default value: INSERT INTO distributors (name) VALUES ('British Lion'); Insert several rows into table films from table tmp: INSERT INTO films SELECT * FROM tmp; Insert into arrays (refer to the PostgreSQL User's Guide for further information about arrays): -- Create an empty 3x3 gameboard for noughts-and-crosses -- (all of these queries create the same board attribute) INSERT INTO tictactoe (game, board[1:3][1:3]) VALUES (1,'{{"","",""},{},{"",""}}'); INSERT INTO tictactoe (game, board[3][3]) VALUES (2,'{}'); INSERT INTO tictactoe (game, board) VALUES (3,'{{,,},{,,},{,,}}'); COMPATIBILITY
SQL92 INSERT is fully compatible with SQL92. Possible limitations in features of the query clause are documented for SELECT [select(7)]. SQL - Language Statements 2002-11-22 INSERT(7)
All times are GMT -4. The time now is 08:44 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy