f = new file() f.create('test_semicolon.csv') a = "2014;INTOS;INTOS;S&P;CANDE;SP 75 - S25;SP 75;25;16,40;USD;IT;ETE;0;0;0;0;0;0;50;0;100;0;25;0;175;CC" b = "2014;CHEL;CHEL COMPIGE;NOF-OC;WBRID;DE S-753 - F200;DE S 753;200;21,95;EUR;FR;CRA;0;0;0;0;0;0;600;0;600;0;800;0;2000;CC" f.puts(a) f.puts(b) f.close() if file('test_semicolon.dbf') drop table test_semicolon endif if not file('test_semicolon.dbf') create table test_semicolon (fld1 character(15),; fld2 character(15),; fld3 character(15),; fld4 character(15),; fld5 character(15),; fld6 character(15),; fld7 character(15),; fld8 character(15),; fld9 numeric(10,2),; fld10 character(15),; fld11 character(15),; fld12 character(15),; fld13 character(15),; fld14 character(15),; fld15 character(15),; fld16 character(15),; fld17 character(15),; fld18 character(15),; fld19 character(15),; fld20 character(15),; fld21 character(15),; fld22 character(15),; fld23 character(15),; fld24 character(15),; fld25 character(15),; fld26 character(15)) endif ********************* cSource = 'test_semicolon.csv' cTarget = 'test_semicolon.dbf' clear s = seconds() _app.allowYieldOnMsg := true set procedure to :duflp:stringex.cc q = new query() q.sql = 'select * from '+cTarget q.active = true f = new file() f.open(cSource) nCount = 0 do while not f.eof() cStr = f.gets() aArray = new stringex(cStr).breakstring(';') q.rowset.beginappend() for n = 1 to aArray.size q.rowset.fields[n].value = aArray[n] next q.rowset.save() nCount ++ if nCount%50 = 0 ?nCount+ ' Records' endif enddo ?nCount+ ' Records' ?seconds()-s +' Seconds' f.close() q.active = false