Which Arduino are you running this on? The 328-based Arduinos have 2K of SRAM. The SD library needs 1/4 of that for the buffer to read from/write to the SD card.
I should have said that up front. This is running on the Arduino Uno with the Ethernet Shield.
I also will be testing it on an ArduinoPOE and then on an Arduino Uno with a WiFi Shield.
I understand the memory management problems of storing tons of literals in to SRAM at run time. I had not (yet) seen any mention of F() macros in the examples I've been reading. I will certainly try that...
Aside from the code being less elegant and hogging memory do you think that is actually part of the execution problem?