Class 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.
    • 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.
      • Methods inherited from class java.io.OutputStream

        nullOutputStream
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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 statement
        bufferSize - 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 operation
        bufferSize - 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 class java.io.OutputStream
        Throws:
        java.io.IOException
      • write

        public void write​(byte[] buf)
                   throws java.io.IOException
        Overrides:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • write

        public void write​(byte[] buf,
                          int off,
                          int siz)
                   throws java.io.IOException
        Overrides:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.OutputStream
        Throws:
        java.io.IOException
      • flush

        public void flush()
                   throws java.io.IOException
        Specified by:
        flush in interface java.io.Flushable
        Overrides:
        flush in class java.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 interface CopyIn
        Parameters:
        buf - array of bytes to write
        off - 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 interface CopyIn
        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 interface CopyOperation
        Returns:
        overall format of each row: 0 = textual, 1 = binary
      • getFieldFormat

        public int getFieldFormat​(int field)
        Specified by:
        getFieldFormat in interface CopyOperation
        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 interface CopyOperation
        Throws:
        java.sql.SQLException - if cancelling fails
      • getFieldCount

        public int getFieldCount()
        Specified by:
        getFieldCount in interface CopyOperation
        Returns:
        number of fields in each row for this operation
      • isActive

        public boolean isActive()
        Specified by:
        isActive in interface CopyOperation
        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.
        Specified by:
        flushCopy in interface CopyIn
        Throws:
        java.sql.SQLException - if the operation fails.
      • endCopy

        public long endCopy()
                     throws java.sql.SQLException
        Description copied from interface: CopyIn
        Finishes copy operation successfully.
        Specified by:
        endCopy in interface CopyIn
        Returns:
        number of updated rows for server 8.2 or newer (see getHandledRowCount())
        Throws:
        java.sql.SQLException - if the operation fails.
      • 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 interface CopyOperation
        Returns:
        number of handled rows or -1