Subject Re: importing csv file
From Mervyn Bick <invalid@invalid.invalid>
Date Wed, 30 Jun 2021 11:21:56 +0200
Newsgroups dbase.getting-started
Attachment(s) ghor_csv2dbf.prg

On 2021/06/30 10:39, Mustansir Ghor wrote:
> Dear Gaetano
>
> I am sending csv file that need to be appended
>

My previous message crossed this one.

A little example program is attached.

Mervyn.



if file('ghor_1.dbf')
drop table ghor_1
endif

if not file('ghor_1.dbf')
   create table ghor_1  (location character(15),district character(15),;
     ward character(15),unit character(5),area int,demand_note date,;
     last_invoice_date date,next_invoice_date date,agreement_date date)
endif

//If you have an existing table delete or comment out the above.

//The field names are not used in the code below so it doesn't
//matter if you have used different field names

//Edit the values for cTable and cCSV to suit.

cTable = 'ghor_1'
cCSV = 'ghor.csv'
cDate = set('date')  //save date format
set date to american  //dates in .csv are in American format
set procedure to :duflp:stringex.cc
q = new query()
q.sql = "select * from "+cTable
q.active = true
f = new file()
f.open(cCSV)
cRead = f.gets(100000) // Skip record with field names
do while not f.eof()
  cRead = f.gets(100000)
  aRecord = new stringex(cRead).breakstring(",",true)
q.rowset.beginAppend()
   for n = 1 to aRecord.size
    if q.rowset.fields[n].type = 'DATE'
      q.rowset.fields[n].value = ctod(aRecord[n])
    else //all numeric and character field types can simply be saved
      q.rowset.fields[n].value = aRecord[n]
    endif
  next
   q.rowset.save()
enddo
f.close()
q.active = false
close procedure :duflp:stringex.cc
msgbox('Done')
set date to &cDate  // set date format back to original