Here's a little fix I just wrote for an application for a custom format import. The incoming file is a .csv generated by MickeySoft Excel. The code below will scan a text buffer "S" returning a parsed field value. You must maintain a global referenced variable "RP" for retaining the current buffer position between calls, or change the function call to pass it.
Unfortunately for some, the code is Borland Object Pascal. But, hey, any good programmer can write "C" in any language. Warning: This is just finished code that has been alpha tested only. And it is Quick and dirty, so I expect a couple of hundred messages containing solutions of two lines of code or less solving the same problem :-) Fred ----------------------- function ExtractData(S: string): string; var j: Integer; FS: String; begin FS := ''; if (RP = 1) and (S[RP] = FSeprator) then Inc(RP) else begin if S[RP] = FSeprator then Inc(RP); if S[RP] = FDelimiter then begin Inc(RP); repeat begin for j := RP to Length(S) do if S[j] = FDelimiter then break; if (S[j] = FDelimiter) and (S[j+1] = FDelimiter) then Inc(j); FS := FS + Copy(S, RP, j - RP); Inc(j); RP := j; end until (S[j] = FSeprator) or (j >= Length(S)); end else begin if s[RP+1] = FSeprator then Inc(RP) else begin for j := RP to Length(S) do if S[j] = FSeprator then break; FS := FS + Copy(S, RP, j - RP); end; RP := j; end; end; Result := FS; end; --------------------- -----Original Message----- From: Antonio Francino [mailto:[EMAIL PROTECTED] Sent: Tuesday, September 27, 2005 7:13 PM To: sqlite-users@sqlite.org Subject: [sqlite] csv .import problems 2 problems when importing data in sqlite3 with .import: 1. It leaves quotes in. If data field is enclosed in quotes, they are 'doubled'. (As reported in this list on Feb 16th) 2. When a string contains a comma, it is interpreted as separator, and an error is issued, of the type -"4 fields were expected, and there were 6 " There is a workaround. For (1), taking all quotes out with a tect processor, and .importing in ".mode list". But not easy if some string data contain a comma, since then format gets corrupted. For (2), change the separator character to something else such as | or TAB. But it is a pity that csv format is not correctly read in. Anyway, that happens with most database managers I've seen. Antoni