Re: cursor "jdbc_curs_1" does not exist
От | Kris Jurka |
---|---|
Тема | Re: cursor "jdbc_curs_1" does not exist |
Дата | |
Msg-id | Pine.BSO.4.56.0406151102540.13010@leary.csoft.net обсуждение исходный текст |
Ответ на | cursor "jdbc_curs_1" does not exist (tmp@nitwit.de) |
Ответы |
Re: cursor "jdbc_curs_1" does not exist
|
Список | pgsql-jdbc |
On Tue, 15 Jun 2004 tmp@nitwit.de wrote: > Hi! > > org.postgresql.util.PSQLException: ERROR: cursor "jdbc_curs_1" does not exist > > Can somebody explain this exception? What I do is pretty simple: I read text > from one table, gzip it and insert it into another table. But it seems that > the exception is thrown at ResulSet.next() but I'm not sure. Here's the code > anyway: The problem here is that you commit every 100 rows. A commit closes any open cursors, so the next time you try to call next the cursor isn't there any more. Kris Jurka > > > final PreparedStatement select = f4t.prepareStatement( "SELECT urlid, html > FROM html" ); > final PreparedStatement insert = f4t.prepareStatement( "INSERT INTO > legacy.zhtml (id, zhtml) VALUES (?, ?)" ); > > f4t.setAutoCommit( false ); > > select.setFetchSize( FETCH_SIZE ); > > int i = 0; > for( ResultSet row = select.executeQuery(); row.next(); ) > { > final String id = row.getString( "urlid" ); > final String html = row.getString( "html" ); > > final ByteArrayOutputStream bos = new ByteArrayOutputStream(); > final DataOutputStream dos = new DataOutputStream( bos ); > > WritableUtils.writeCompressedString( dos, html ); > > insert.setString( 1, id ); > insert.setBytes( 2, bos.toByteArray() ); > insert.execute(); > > System.out.print( '.' ); > > if( ++i % 100 == 0 ) > { > System.out.println(); > f4t.commit(); > } > } > > f4t.commit(); > f4t.setAutoCommit( true ); > > > > ---------------------------(end of broadcast)--------------------------- > TIP 8: explain analyze is your friend >
В списке pgsql-jdbc по дате отправления: