org.h2.tools
Class Csv

java.lang.Object
  extended by org.h2.tools.Csv
All Implemented Interfaces:
SimpleRowSource

public class Csv
extends java.lang.Object
implements SimpleRowSource

A facility to read from and write to CSV (comma separated values) files.

Author:
Thomas Mueller, Sylvain Cuaz

Method Summary
 void close()
          INTERNAL
 char getEscapeCharacter()
          Get the current escape character.
 char getFieldDelimiter()
          Get the current field delimiter.
 char getFieldSeparatorRead()
          Get the current field separator for reading.
 java.lang.String getFieldSeparatorWrite()
          Get the current field separator for writing.
static Csv getInstance()
          Get a new object of this class.
 java.lang.String getRowSeparatorWrite()
          Get the current row separator for writing.
 java.sql.ResultSet read(java.io.Reader reader, java.lang.String[] colNames)
          Reads CSV data from a reader and returns a result set.
 java.sql.ResultSet read(java.lang.String inputFileName, java.lang.String[] colNames, java.lang.String charset)
          Reads from the CSV file and returns a result set.
 java.lang.Object[] readRow()
          INTERNAL
 void reset()
          INTERNAL
 void setEscapeCharacter(char escapeCharacter)
          Set the escape character (used to escape the field delimiter).
 void setFieldDelimiter(char fieldDelimiter)
          Set the field delimiter.
 void setFieldSeparatorRead(char fieldSeparatorRead)
          Override the field separator for reading.
 void setFieldSeparatorWrite(java.lang.String fieldSeparatorWrite)
          Override the field separator for writing.
 void setLineSeparator(java.lang.String lineSeparator)
          Set the line separator.
 void setNullString(java.lang.String nullString)
          Set the value that represents NULL.
 void setRowSeparatorWrite(java.lang.String rowSeparatorWrite)
          Override the end-of-row marker for writing.
 int write(java.sql.Connection conn, java.lang.String outputFileName, java.lang.String sql, java.lang.String charset)
          Writes the result set of a query to a file in the CSV format.
 int write(java.lang.String outputFileName, java.sql.ResultSet rs, java.lang.String charset)
          Writes the result set to a file in the CSV format.
 int write(java.io.Writer writer, java.sql.ResultSet rs)
          Writes the result set to a file in the CSV format.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static Csv getInstance()
Get a new object of this class.

Returns:
the new instance

write

public int write(java.io.Writer writer,
                 java.sql.ResultSet rs)
          throws java.sql.SQLException
Writes the result set to a file in the CSV format.

Parameters:
writer - the writer
rs - the result set
Returns:
the number of rows written
Throws:
java.sql.SQLException

write

public int write(java.lang.String outputFileName,
                 java.sql.ResultSet rs,
                 java.lang.String charset)
          throws java.sql.SQLException
Writes the result set to a file in the CSV format. The result set is read using the following loop:
 while (rs.next()) {
     writeRow(row);
 }
 

Parameters:
outputFileName - the name of the csv file
rs - the result set - the result set must be positioned before the first row.
charset - the charset or null to use UTF-8
Returns:
the number of rows written
Throws:
java.sql.SQLException

write

public int write(java.sql.Connection conn,
                 java.lang.String outputFileName,
                 java.lang.String sql,
                 java.lang.String charset)
          throws java.sql.SQLException
Writes the result set of a query to a file in the CSV format.

Parameters:
conn - the connection
outputFileName - the file name
sql - the query
charset - the charset or null to use UTF-8
Returns:
the number of rows written
Throws:
java.sql.SQLException

read

public java.sql.ResultSet read(java.lang.String inputFileName,
                               java.lang.String[] colNames,
                               java.lang.String charset)
                        throws java.sql.SQLException
Reads from the CSV file and returns a result set. The rows in the result set are created on demand, that means the file is kept open until all rows are read or the result set is closed.

Parameters:
inputFileName - the file name
colNames - or null if the column names should be read from the CSV file
charset - the charset or null to use UTF-8
Returns:
the result set
Throws:
java.sql.SQLException

read

public java.sql.ResultSet read(java.io.Reader reader,
                               java.lang.String[] colNames)
                        throws java.sql.SQLException,
                               java.io.IOException
Reads CSV data from a reader and returns a result set. The rows in the result set are created on demand, that means the reader is kept open until all rows are read or the result set is closed.

Parameters:
reader - the reader
colNames - or null if the column names should be read from the CSV file
Returns:
the result set
Throws:
SQLException, - IOException
java.sql.SQLException
java.io.IOException

readRow

public java.lang.Object[] readRow()
                           throws java.sql.SQLException
INTERNAL

Specified by:
readRow in interface SimpleRowSource
Returns:
the row or null
Throws:
java.sql.SQLException

close

public void close()
INTERNAL

Specified by:
close in interface SimpleRowSource

reset

public void reset()
           throws java.sql.SQLException
INTERNAL

Specified by:
reset in interface SimpleRowSource
Throws:
java.sql.SQLException - if this operation is not supported

setFieldSeparatorWrite

public void setFieldSeparatorWrite(java.lang.String fieldSeparatorWrite)
Override the field separator for writing. The default is ",".

Parameters:
fieldSeparatorWrite - the field separator

getFieldSeparatorWrite

public java.lang.String getFieldSeparatorWrite()
Get the current field separator for writing.

Returns:
the field separator

setFieldSeparatorRead

public void setFieldSeparatorRead(char fieldSeparatorRead)
Override the field separator for reading. The default is ','.

Parameters:
fieldSeparatorRead - the field separator

getFieldSeparatorRead

public char getFieldSeparatorRead()
Get the current field separator for reading.

Returns:
the field separator

getRowSeparatorWrite

public java.lang.String getRowSeparatorWrite()
Get the current row separator for writing.

Returns:
the row separator

setRowSeparatorWrite

public void setRowSeparatorWrite(java.lang.String rowSeparatorWrite)
Override the end-of-row marker for writing. The default is null. After writing the end-of-row marker, a line feed is written (\n or \r\n depending on the system settings).

Parameters:
rowSeparatorWrite - the row separator

setFieldDelimiter

public void setFieldDelimiter(char fieldDelimiter)
Set the field delimiter. The default is " (a double quote). The value 0 means no field delimiter is used.

Parameters:
fieldDelimiter - the field delimiter

getFieldDelimiter

public char getFieldDelimiter()
Get the current field delimiter.

Returns:
the field delimiter

setEscapeCharacter

public void setEscapeCharacter(char escapeCharacter)
Set the escape character (used to escape the field delimiter). The default is " (a double quote). The value 0 means no escape character is used.

Parameters:
escapeCharacter - the escape character

getEscapeCharacter

public char getEscapeCharacter()
Get the current escape character.

Returns:
the escape character

setLineSeparator

public void setLineSeparator(java.lang.String lineSeparator)
Set the line separator.

Parameters:
lineSeparator - the line separator

setNullString

public void setNullString(java.lang.String nullString)
Set the value that represents NULL.

Parameters:
nullString - the null