Hi I have been using this method for over a year now. NOTE: Beware of "\" (escape) characters. If you have to use them, they must be changed to "\\". This is a sample of something similar to what I do: /bin/cat tab-delimited.txt | /usr/bin/psql -c "copy table1 from stdin;" database1 The "/bin/cat tab-delimited.txt" represents a program that generates the required tab delimited text. Example file. tab-delimited.txt => 7713857 bytes 69423 lines Example table. Table = table1 +----------------------------------+----------------------------------+-------+ | Field | Type | Length| +----------------------------------+----------------------------------+-------+ | Time | abstime | 4 | | Type | text | var | | Id | text | var | | Duration | int4 | 4 | | Server | inet | var | | User | text | var | | Location | text | var | | Port | int4 | 4 | | Service | text | var | | Remote | inet | var | | Caller | text | var | | Input | int4 | 4 | | Output | int4 | 4 | | State | text | var | | Delay | int4 | 4 | +----------------------------------+----------------------------------+-------+ Resources required to import data : 21.82 seconds elapsed 10% CPU utilization (183 major + 29 minor) page faults 0 swaps Machine has 128 MB Total memory, 8.5 MB shared memory on a Pentium Pro 200 with 256 KB L2 cache and a 9 GB SEAGATE ST19101W Ultra Wide SCSI Drive running postgresql-6.5.3. This translates to approximately 3182 records per second, averaging 111 bytes per record , using only 10% CPU.