Print all the fields of record using awk

Hi,

i want to generate print statement using awk.
i have 20+ and 30+ fields in each line

Now its priting only first eight fields print statement as output not all.

my record is as shown below filename

 
TFP_DNS,saidata.US_TFP_DNS_1,IMSI,APN,IMEI,EVENT_AMOUNT,CAUSE_PROC,CHARGING_INFO,RAG1,RAG2,RAG3,RAG4,RAG5,RAG6,RAG7,RAG8,RAG9,RAG10,RAG11
TFP_DNS,saidata.PS_TFP_DNS_1_HOUR,IMSI,APN,IMEI,EVENT_AMOUNT,CAUSE_PROC,CHARGING_INFO,RAG1,RAG2,RAG3,RAG4,RAG5,RAG6,RAG7,RAG8,RAG9,RAG10
TFP_DNS,saidata.PS_TFP_DNS_1_DAY,IMSI,APN,IMEI,EVENT_AMOUNT,CAUSE_PROC,CHARGING_INFO,RAG1,RAG2,RAG3,RAG4,RAG5,RAG6,RAG7,RAG8,RAG9,
TFP_DNS,saidata.PS_TFP_DNS_1_WEEK,IMSI,APN,IMEI,EVENT_AMOUNT,CAUSE_PROC,CHARGING_INFO,RAG1,RAG2,RAG3,RAG4,RAG5,RAG6,RAG7,RAG8,
TFP_DNS,saidata.PS_TFP_DNS_1_MONTH,IMSI,APN,IMEI,EVENT_AMOUNT,CAUSE_PROC,CHARGING_INFO,RAG1,RAG2,RAG3,RAG4,RAG5,RAG6,RAG7,RAG8,RAG9,RAG10,RAG11,RAG12,RAG13,RAG14  
 
my awk calling in script is 
awk -F"," -v var=$sql_dir -f do.agg.out fiiename.csv 
 
and awk file do.agg.out looks like 
 
/US_/ { 
 print "spool /opt/nsn/robot/spool/Actual_RAW_JOB.txt; " > ""var"/RAW-Data-out.sql"
  for( i = 2; i <=NF; i++ )  
  {
           print " select count(*), "$i" FROM "$1" where "$i" in (select distinct "$i" from "$1") group by "$i" order by "$i" asc; \n"  >> ""var"/RAW-Data-out.sql"
  }
          print " select count(*) from "$1";\n" >>  ""var"/RAW-Data-out.sql"
   print " spool off; \n exit; " >> ""var"/RAW-Data-out.sql" 
    }
 

its working fine but its displaying only 8 records (print statement) in for loop instead of number of fields ??

let me know anything wrong i am doing ?

Thanks,
Raghavendra

I don't see any error in the for loop, can you try print the value of NF before the for loop.

 
spool /opt/nsn/robot/spool/Actual_RAW_JOB.txt;
 select count(*), IMSI FROM saidata.US_TFP_DNS_1 where IMSI in (select distinct IMSI from saidata.US_TFP_DNS_1) group by IMSI order by IMSI asc;
 select count(*), APN FROM saidata.US_TFP_DNS_1 where APN in (select distinct APN from saidata.US_TFP_DNS_1) group by APN order by APN asc;
 select count(*), IMEI FROM saidata.US_TFP_DNS_1 where IMEI in (select distinct IMEI from saidata.US_TFP_DNS_1) group by IMEI order by IMEI asc;
 select count(*), EVENT_AMOUNT FROM saidata.US_TFP_DNS_1 where EVENT_AMOUNT in (select distinct EVENT_AMOUNT from saidata.US_TFP_DNS_1) group by EVENT_AMOUNT order by EVENT_AMOUNT asc;
 select count(*), CAUSE_PROC FROM saidata.US_TFP_DNS_1 where CAUSE_PROC in (select distinct CAUSE_PROC from saidata.US_TFP_DNS_1) group by CAUSE_PROC order by CAUSE_PROC asc;
 select count(*), CHARGING_INFO FROM saidata.US_TFP_DNS_1 where CHARGING_INFO in (select distinct CHARGING_INFO from saidata.US_TFP_DNS_1) group by CHARGING_INFO order by CHARGING_INFO asc;
 select count(*), RAG1 FROM saidata.US_TFP_DNS_1 where RAG1 in (select distinct RAG1 from saidata.US_TFP_DNS_1) group by RAG1 order by RAG1 asc;
 select count(*), RAG2 FROM saidata.US_TFP_DNS_1 where RAG2 in (select distinct RAG2 from saidata.US_TFP_DNS_1) group by RAG2 order by RAG2 asc;
 select count(*) from saidata.US_TFP_DNS_1;
 spool off;
 exit;

it is generating only 8 statements in forloop but i am expecting as many fileds in the input file