Package org.postgresql.copy
Class PGCopyOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- org.postgresql.copy.PGCopyOutputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.Flushable
,java.lang.AutoCloseable
,CopyIn
,CopyOperation
public class PGCopyOutputStream extends java.io.OutputStream implements CopyIn
OutputStream for buffered input into a PostgreSQL COPY FROM STDIN operation.
-
-
Constructor Summary
Constructors Constructor Description PGCopyOutputStream(CopyIn op)
Use given CopyIn operation for writing.PGCopyOutputStream(CopyIn op, int bufferSize)
Use given CopyIn operation for writing.PGCopyOutputStream(PGConnection connection, java.lang.String sql)
Uses given connection for specified COPY FROM STDIN operation.PGCopyOutputStream(PGConnection connection, java.lang.String sql, int bufferSize)
Uses given connection for specified COPY FROM STDIN operation.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
cancelCopy()
Cancels this copy operation, discarding any exchanged data.void
close()
long
endCopy()
Finishes copy operation successfully.void
flush()
void
flushCopy()
Force any buffered output to be sent over the network to the backend.int
getFieldCount()
int
getFieldFormat(int field)
int
getFormat()
long
getHandledRowCount()
After successful end of copy, returns the number of database records handled in that operation.boolean
isActive()
void
write(byte[] buf)
void
write(byte[] buf, int off, int siz)
void
write(int b)
void
writeToCopy(byte[] buf, int off, int siz)
Writes specified part of given byte array to an open and writable copy operation.void
writeToCopy(ByteStreamWriter from)
Writes a ByteStreamWriter to an open and writable copy operation.
-
-
-
Constructor Detail
-
PGCopyOutputStream
public PGCopyOutputStream(PGConnection connection, java.lang.String sql) throws java.sql.SQLException
Uses given connection for specified COPY FROM STDIN operation.- Parameters:
connection
- database connection to use for copying (protocol version 3 required)sql
- COPY FROM STDIN statement- Throws:
java.sql.SQLException
- if initializing the operation fails
-
PGCopyOutputStream
public PGCopyOutputStream(PGConnection connection, java.lang.String sql, int bufferSize) throws java.sql.SQLException
Uses given connection for specified COPY FROM STDIN operation.- Parameters:
connection
- database connection to use for copying (protocol version 3 required)sql
- COPY FROM STDIN statementbufferSize
- try to send this many bytes at a time- Throws:
java.sql.SQLException
- if initializing the operation fails
-
PGCopyOutputStream
public PGCopyOutputStream(CopyIn op)
Use given CopyIn operation for writing.- Parameters:
op
- COPY FROM STDIN operation
-
PGCopyOutputStream
public PGCopyOutputStream(CopyIn op, int bufferSize)
Use given CopyIn operation for writing.- Parameters:
op
- COPY FROM STDIN operationbufferSize
- try to send this many bytes at a time
-
-
Method Detail
-
write
public void write(int b) throws java.io.IOException
- Specified by:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
write
public void write(byte[] buf) throws java.io.IOException
- Overrides:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
write
public void write(byte[] buf, int off, int siz) throws java.io.IOException
- Overrides:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException
- Specified by:
flush
in interfacejava.io.Flushable
- Overrides:
flush
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
writeToCopy
public void writeToCopy(byte[] buf, int off, int siz) throws java.sql.SQLException
Description copied from interface:CopyIn
Writes specified part of given byte array to an open and writable copy operation.- Specified by:
writeToCopy
in interfaceCopyIn
- Parameters:
buf
- array of bytes to writeoff
- offset of first byte to write (normally zero)siz
- number of bytes to write (normally buf.length)- Throws:
java.sql.SQLException
- if the operation fails
-
writeToCopy
public void writeToCopy(ByteStreamWriter from) throws java.sql.SQLException
Description copied from interface:CopyIn
Writes a ByteStreamWriter to an open and writable copy operation.- Specified by:
writeToCopy
in interfaceCopyIn
- Parameters:
from
- the source of bytes, e.g. a ByteBufferByteStreamWriter- Throws:
java.sql.SQLException
- if the operation fails
-
getFormat
public int getFormat()
- Specified by:
getFormat
in interfaceCopyOperation
- Returns:
- overall format of each row: 0 = textual, 1 = binary
-
getFieldFormat
public int getFieldFormat(int field)
- Specified by:
getFieldFormat
in interfaceCopyOperation
- Parameters:
field
- number of field (0..fieldCount()-1)- Returns:
- format of requested field: 0 = textual, 1 = binary
-
cancelCopy
public void cancelCopy() throws java.sql.SQLException
Description copied from interface:CopyOperation
Cancels this copy operation, discarding any exchanged data.- Specified by:
cancelCopy
in interfaceCopyOperation
- Throws:
java.sql.SQLException
- if cancelling fails
-
getFieldCount
public int getFieldCount()
- Specified by:
getFieldCount
in interfaceCopyOperation
- Returns:
- number of fields in each row for this operation
-
isActive
public boolean isActive()
- Specified by:
isActive
in interfaceCopyOperation
- Returns:
- is connection reserved for this Copy operation?
-
flushCopy
public void flushCopy() throws java.sql.SQLException
Description copied from interface:CopyIn
Force any buffered output to be sent over the network to the backend. In general this is a useless operation as it will get pushed over in due time or when endCopy is called. Some specific modified server versions (Truviso) want this data sooner. If you are unsure if you need to use this method, don't.
-
endCopy
public long endCopy() throws java.sql.SQLException
Description copied from interface:CopyIn
Finishes copy operation successfully.
-
getHandledRowCount
public long getHandledRowCount()
Description copied from interface:CopyOperation
After successful end of copy, returns the number of database records handled in that operation. Only implemented in PostgreSQL server version 8.2 and up. Otherwise, returns -1.- Specified by:
getHandledRowCount
in interfaceCopyOperation
- Returns:
- number of handled rows or -1
-
-