Thread: Parameterized queries
Hello, I would like to know, if there exists a way in PostgreSQL to insert data not exclusively via the SQL-query-string but using a direct data interface, thus avoiding parsing the data into string and then back into binary data representation (e.g. Double). What I would like to use is a query like this: INSERT INTO table (number1, number2) VALUES (?,?) Before executing the query the command structure would be fill with the parameters for the 2 values (e.g. 3.33 and 5.555) and then there would follow the execution, where the query parser would replace the "?" with the current data of the parameters and execute the appopriate query. Unfortunately I cannot find anything about query-contructions with question marks ("?"), therefore I am already wondering if this way of transfering data exists with PostgreSQL!? Is there anybody out there, who can help me with this? Is there another way of efficiently transfering data, avoiding parsing back and forth? Jan Klostermann PS: I tried to do it via the ODBC interface and it did not work. Then I scanned through the documentation, incl. libpq and did not find anything related.
On Fri, Nov 14, 2003 at 05:05:46PM +0100, Jan Klostermann wrote: > > I would like to know, if there exists a way in PostgreSQL to insert data > not exclusively via the SQL-query-string but using a direct data > interface, thus avoiding parsing the data into string and then back into > binary data representation (e.g. Double). You could use binary cursors. > What I would like to use is a query like this: INSERT INTO table > (number1, number2) VALUES (?,?) > Before executing the query the command structure would be fill with the > parameters for the 2 values (e.g. 3.33 and 5.555) and then there would > follow the execution, where the query parser would replace the "?" with > the current data of the parameters and execute the appopriate query. Wouldn't it be easier in this case to skip the SQL altogether and just use the COPY command to pump data into the table with minimal processing? You'd still go through the parsing, but that may end up saving you trouble anyway if you ever need to run the server and the client on different machines--and I wouldn't be surprised if going through SQL is costing you more than the value parsing anyway. From what I've heard, COPY (or tablewriter if you use libpqxx) is much faster than SQL INSERT. Jeroen
"Jan Klostermann" <klostermann@rhf.de> writes: > I would like to know, if there exists a way in PostgreSQL to insert data > not exclusively via the SQL-query-string but using a direct data > interface, This ability exists as of 7.4. I do not know whether the ODBC interface supports it, but libpq does and I believe JDBC does. regards, tom lane