Ken at [EMAIL PROTECTED] wrote:
> Hi. I am building a Witango app to upload the contents of a huge csv
> file (9 cols x 22000 rows).
I wrote this mess of code to do exactly what you are doing for a CD shop.
Their inhouse system produces a CSV file of inventory levels every hour and
FTPs it to the web server. Witango picks it up, parses it for commas within
quotes, pads out any short records at the end and creates a usable array.
<@ASSIGN NAME=FileContents VALUE='<@INCLUDE
FILE="<@APPFILEPATH>updatefiles:<@VAR local$DistinctFileListArray[<@VAR
local$currfile>,1]>">' SCOPE=LOCAL>
<@IFEMPTY VALUE='@@local$FileContents'>
File is Empty
<@ELSE>
<@ASSIGN NAME=DoubleQuote VALUE='OFF' SCOPE=LOCAL>
<@ASSIGN FileContents VALUE=<@REPLACE STR=<@VAR local$FileContents>
FINDSTR=<@CRLF> REPLACESTR="[ROW]"> SCOPE=LOCAL>
<@ASSIGN FileContents VALUE=<@REPLACE STR=<@VAR local$FileContents>
FINDSTR=<@CHAR CODE=10> REPLACESTR="[ROW]"> SCOPE=LOCAL>
<@ASSIGN FileContents VALUE=<@REPLACE STR=<@VAR local$FileContents>
FINDSTR=<@CHAR CODE=13> REPLACESTR="[ROW]"> SCOPE=LOCAL>
<@ASSIGN FileContents VALUE=<@REPLACE STR=<@VAR local$FileContents>
FINDSTR=<@CHAR CODE=63> REPLACESTR=""> SCOPE=LOCAL>
<@FOR START=1 STOP=<@LENGTH <@VAR local$FileContents>>>
<@ASSIGN NAME=CurrChar Value=<@SUBSTRING STR=<@VAR local$FileContents>
START=<@CURROW> NUMCHARS=1> SCOPE=LOCAL>
<@ASSIGN NAME=NextChar Value=<@SUBSTRING STR=<@VAR local$FileContents>
START=<@CALC EXPR='<@CURROW> + 1'> NUMCHARS=1> SCOPE=LOCAL>
<@IF EXPR='<@VAR local$CurrChar>=<@DQ>'>
<@IF '(<@VAR local$DoubleQuote>="ON") AND (<@VAR local$NextChar> =
<@CHAR CODE=44>)'>
<@ASSIGN NAME=DoubleQuote VALUE='OFF' SCOPE=LOCAL>
<@ELSEIF '<@VAR local$DoubleQuote>="OFF"'>
<@ASSIGN NAME=DoubleQuote VALUE='ON' SCOPE=LOCAL>
</@IF>
<@ELSEIF EXPR='<@VAR local$CurrChar>=<@CHAR CODE=44>'>
<@IF '<@VAR local$DoubleQuote>=OFF'>
<@ASSIGN NAME=NewString VALUE="<@VAR local$NewString>[COL]"
SCOPE=LOCAL>
<@ELSEIF "<@VAR local$DoubleQuote>=ON">
<@ASSIGN NAME=NewString VALUE="<@VAR local$NewString><@VAR
local$CurrChar>" SCOPE=LOCAL>
</@IF>
<@ELSE>
<@ASSIGN NAME=NewString VALUE="<@VAR local$NewString><@VAR
local$CurrChar>" SCOPE=LOCAL>
</@IF>
</@FOR>
<@ASSIGN NAME=UpdateArray VALUE=<@ARRAY VALUE=<@VAR local$NewString>
CDELIM='[COL]' RDELIM='[ROW]'> SCOPE=local>
<@VAR local$UpdateArray><br>
NUMROWS: <@NUMROWS ARRAY=local$UpdateArray><BR>
</@IF>
Byte Services Pty Ltd
http://www.byteserve.com.au/
[EMAIL PROTECTED]
Ph 02 9960 6099 Mob 0409 960 609 Fax 02 9960 6088
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf