We had a file format that was coming from a mainframe where it was impossibly 
long line, but the first two characters told the line type.  We knew the line 
wasn't more than 2000 characters long including the delimiters.  We came up 
with this approach and it works blazingly fast with VFP.

Step 1: Create a temporary cursor for the entire contents of the file.  
Basically get it into VFP as quick as we can.
CREATE CURSOR MyTempFile ( cType C(2), Field01 C(200), Field02 C(200), Field03 
C(200), Field04 C(200), Field05 C(200), Field06 C(200), Field07 C(200), Field08 
C(200), Field09 C(200), Field10 C(200))

Step 2: Append into MyTempFile from file DATFile.txt

Step 3: Select the records out of the MyTempFile based on the cType which tells 
us what the structure is expected to be.  This might fit your scenario where a 
certain field in the delimeter "means" something.  You only need to handle the 
scenario where a delimiter spans from one field to another.  Example solution?: 
SCAN
  SCATTER NAME oRec
  cFullField = oRec.Field01 + oRec.Field02 + oRec.Field03 + oRec.Field04 + 
oRec.Field05 + oRec.Field06 + oRec.Field07 + oRec.Field08 + oRec.Field09 + 
oRec.Field10
  SELECT CASE
    CASE oRec.cType = "X2"
      SELECT TableX2
      SCATTER NAME oRec BLANK
      oRec.Fld01 = STREXTRACT(cFulLField, "|", "|", 1)
      oRec.Fld02 = STREXTRACT(cFulLField, "|", "|", 2)
      oRec.Fld03 = STREXTRACT(cFulLField, "|", "|", 3) && Might be a memo field
      INSERT INTO TableX2 FROM NAME oRec
    CASE oRec.cType = "TY"
      && do something
    OTHERWISE
      && Unhandled situation
  ENDCASE
Endscan

Hope this helps!

-----Original Message-----
From: ProFox [mailto:[email protected]] On Behalf Of Matt Wiedeman
Sent: Thursday, April 20, 2017 10:58 AM
To: [email protected]
Subject: Text file import

Hello everyone,

I need to setup a job to import a pipe delimited text file. This is easy enough 
but one of the fields is larger than 254 characters. If I use a memo field, it 
does not import that field. I started to setup a routine to step through each 
character and store the fields manually but I would rather not do it that way.

Does anyone have a function or tip they can share to resolve this situation?

[excessive quoting removed by server]

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/f82db4de49440845a14b540f6c2df6a9272...@blufitspmbs01.cherokeega.com
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to