Matt,

This is probably a mistake. The COPY command creates a text file (or CLOB),
which _must_ be parsed if you want to create records and fields.

Just use dml to get the data into an ns_set, or the C API equivalent. All
CSV handlers have problems. PostgreSQL's COPY seems to have difficulty with
quoting, meaning the quote character might appear unescaped in a field,
causing errors. ns_csv* has problems with record boundaries: each record
must be on one line, so \n, etc. don't pass through.

In general, it is a bad idea to convert your data to a more ambiguous format
and then try to recover it unchanged. That is why we have ns_set, arrays and
lists. I work with pg's COPY because it is fast, extremely fast, but your
data must be perfect to use it.

You could try using COPY to a file then see how fast ns_csvget is, but I
assume that the regular database API will be faster, and over time, using a
database API will be much less prone to errors. If this isn't important, you
might reconsider using a database in the first place.

tom jackson

On Tue, Jun 9, 2009 at 8:49 AM, Matt Haggard <haggar...@gmail.com> wrote:

> PostgreSQL has a COPY TO command (
> http://www.postgresql.org/docs/8.1/static/sql-copy.html
> ), which outputs query results in CSV format.
>
> It would be neat if I could execute the command using ns_db dml rather
> than parsing in TCL.  COPY TO writes the result to STDOUT (or a file,
> but I'd like to not use a file).  Any help?
>
> I've been going through the ns_db source, but I dead-end at
> NsDbGetDriver();
>
> Thanks,
>
> Matt Haggard
>
>
> --
> AOLserver - http://www.aolserver.com/
>
> To Remove yourself from this list, simply send an email to <
> lists...@listserv.aol.com> with the
> body of "SIGNOFF AOLSERVER" in the email message. You can leave the
> Subject: field of your email blank.
>


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to 
<lists...@listserv.aol.com> with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: 
field of your email blank.

Reply via email to