Package com.microsoft.sqlserver.jdbc

## Class SQLServerBulkCSVFileRecord

- java.lang.Object
- - com.microsoft.sqlserver.jdbc.SQLServerBulkCSVFileRecord

All Implemented Interfaces:
  `ISQLServerBulkRecord`, `AutoCloseable`

    public class SQLServerBulkCSVFileRecord
    extends Object
    implements AutoCloseable

Provides a simple implementation of the ISQLServerBulkRecord interface that can be used to read in the basic Java data types from a delimited file where each line represents a row of data.

### Field Summary

Fields
`protected Map<Integer,​com.microsoft.sqlserver.jdbc.SQLServerBulkCommon.ColumnMetadata>` `columnMetadata`
`protected String[]` `columnNames`
`protected DateTimeFormatter` `dateTimeFormatter`
`protected DateTimeFormatter` `timeFormatter`

### Constructor Summary

Constructors
`SQLServerBulkCSVFileRecord​(InputStream fileToParse, String encoding, String delimiter, boolean firstLineIsColumnNames)` Constructs a SQLServerBulkCSVFileRecord to parse data from a delimited file with the given encoding.
`SQLServerBulkCSVFileRecord​(String fileToParse, boolean firstLineIsColumnNames)` Constructs a SQLServerBulkCSVFileRecord to parse data from a CSV file with the default encoding.
`SQLServerBulkCSVFileRecord​(String fileToParse, String encoding, boolean firstLineIsColumnNames)` Constructs a SQLServerBulkCSVFileRecord to parse data from a CSV file with the given encoding.
`SQLServerBulkCSVFileRecord​(String fileToParse, String encoding, String delimiter, boolean firstLineIsColumnNames)` Constructs a simple reader to parse data from a delimited file with the given encoding.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addColumnMetadata​(int positionInSource, String name, int jdbcType, int precision, int scale)` Adds metadata for the given column in the file.
`void` `addColumnMetadata​(int positionInSource, String name, int jdbcType, int precision, int scale, DateTimeFormatter dateTimeFormatter)` Adds metadata for the given column in the file.
`protected void` `checkDuplicateColumnName​(int positionInTable, String colName)`
`void` `close()` Releases any resources associated with the file reader.
`DateTimeFormatter` `getColumnDateTimeFormatter​(int column)` Returns the `dateTimeFormatter` for the given column.
`String` `getColumnName​(int column)` Returns the name of the given column.
`Set<Integer>` `getColumnOrdinals()` Returns the ordinals for each of the columns represented in this data record.
`int` `getColumnType​(int column)` Returns the JDBC data type of the given column.
`int` `getPrecision​(int column)` Returns the precision for the given column.
`Object[]` `getRowData()` Returns the data for the current row as an array of Objects.
`int` `getScale​(int column)` Returns the scale for the given column.
`boolean` `isAutoIncrement​(int column)` Returns whether the column represents an identity column.
`boolean` `next()` Advances to the next data row.
`void` `setTimestampWithTimezoneFormat​(String dateTimeFormat)` Sets the format for reading in dates from the file.
`void` `setTimestampWithTimezoneFormat​(DateTimeFormatter dateTimeFormatter)` Sets the format for reading in dates from the file.
`void` `setTimeWithTimezoneFormat​(String timeFormat)` Sets the format for reading in dates from the file.
`void` `setTimeWithTimezoneFormat​(DateTimeFormatter dateTimeFormatter)` Sets the format for reading in dates from the file.
`protected void` `throwInvalidArgument​(String argument)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### columnNames

    protected String[] columnNames

#### columnMetadata

    protected Map<Integer,​com.microsoft.sqlserver.jdbc.SQLServerBulkCommon.ColumnMetadata> columnMetadata

#### dateTimeFormatter

    protected DateTimeFormatter dateTimeFormatter

#### timeFormatter

    protected DateTimeFormatter timeFormatter

### Constructor Detail

#### SQLServerBulkCSVFileRecord

    public SQLServerBulkCSVFileRecord​(String fileToParse,
                                      String encoding,
                                      String delimiter,
                                      boolean firstLineIsColumnNames)
                               throws SQLServerException

Constructs a simple reader to parse data from a delimited file with the given encoding.

Parameters:
  `fileToParse` - File to parse data from
  `encoding` - Charset encoding to use for reading the file, or NULL for the default encoding.
  `delimiter` - Delimiter to used to separate each column
  `firstLineIsColumnNames` - True if the first line of the file should be parsed as column names; false otherwise
Throws:
  `SQLServerException` - If the arguments are invalid, there are any errors in reading the file, or the file is empty

#### SQLServerBulkCSVFileRecord

    public SQLServerBulkCSVFileRecord​(InputStream fileToParse,
                                      String encoding,
                                      String delimiter,
                                      boolean firstLineIsColumnNames)
                               throws SQLServerException

Constructs a SQLServerBulkCSVFileRecord to parse data from a delimited file with the given encoding.

Parameters:
  `fileToParse` - InputStream to parse data from
  `encoding` - Charset encoding to use for reading the file, or NULL for the default encoding.
  `delimiter` - Delimiter to used to separate each column
  `firstLineIsColumnNames` - True if the first line of the file should be parsed as column names; false otherwise
Throws:
  `SQLServerException` - If the arguments are invalid, there are any errors in reading the file, or the file is empty

#### SQLServerBulkCSVFileRecord

    public SQLServerBulkCSVFileRecord​(String fileToParse,
                                      String encoding,
                                      boolean firstLineIsColumnNames)
                               throws SQLServerException

Constructs a SQLServerBulkCSVFileRecord to parse data from a CSV file with the given encoding.

Parameters:
  `fileToParse` - File to parse data from
  `encoding` - Charset encoding to use for reading the file.
  `firstLineIsColumnNames` - True if the first line of the file should be parsed as column names; false otherwise
Throws:
  `SQLServerException` - If the arguments are invalid, there are any errors in reading the file, or the file is empty

#### SQLServerBulkCSVFileRecord

    public SQLServerBulkCSVFileRecord​(String fileToParse,
                                      boolean firstLineIsColumnNames)
                               throws SQLServerException

Constructs a SQLServerBulkCSVFileRecord to parse data from a CSV file with the default encoding.

Parameters:
  `fileToParse` - File to parse data from
  `firstLineIsColumnNames` - True if the first line of the file should be parsed as column names; false otherwise
Throws:
  `SQLServerException` - If the arguments are invalid, there are any errors in reading the file, or the file is empty

### Method Detail

#### close

    public void close()
               throws SQLServerException

Releases any resources associated with the file reader.

Specified by:
  `close` in interface `AutoCloseable`
Throws:
  `SQLServerException` - when an error occurs

#### getColumnDateTimeFormatter

    public DateTimeFormatter getColumnDateTimeFormatter​(int column)

Description copied from interface: `ISQLServerBulkRecord`
Returns the `dateTimeFormatter` for the given column.

Specified by:
  `getColumnDateTimeFormatter` in interface `ISQLServerBulkRecord`
Parameters:
  `column` - Column ordinal
Returns:
  dateTimeFormatter

#### getColumnOrdinals

    public Set<Integer> getColumnOrdinals()

Description copied from interface: `ISQLServerBulkRecord`
Returns the ordinals for each of the columns represented in this data record.

Specified by:
  `getColumnOrdinals` in interface `ISQLServerBulkRecord`
Returns:
  Set of ordinals for the columns.

#### getColumnName

    public String getColumnName​(int column)

Description copied from interface: `ISQLServerBulkRecord`
Returns the name of the given column.

Specified by:
  `getColumnName` in interface `ISQLServerBulkRecord`
Parameters:
  `column` - Column ordinal
Returns:
  Name of the column

#### getColumnType

    public int getColumnType​(int column)

Description copied from interface: `ISQLServerBulkRecord`
Returns the JDBC data type of the given column.

Specified by:
  `getColumnType` in interface `ISQLServerBulkRecord`
Parameters:
  `column` - Column ordinal
Returns:
  JDBC data type of the column

#### getPrecision

    public int getPrecision​(int column)

Description copied from interface: `ISQLServerBulkRecord`
Returns the precision for the given column.

Specified by:
  `getPrecision` in interface `ISQLServerBulkRecord`
Parameters:
  `column` - Column ordinal
Returns:
  Precision of the column

#### getScale

    public int getScale​(int column)

Description copied from interface: `ISQLServerBulkRecord`
Returns the scale for the given column.

Specified by:
  `getScale` in interface `ISQLServerBulkRecord`
Parameters:
  `column` - Column ordinal
Returns:
  Scale of the column

#### isAutoIncrement

    public boolean isAutoIncrement​(int column)

Description copied from interface: `ISQLServerBulkRecord`
Returns whether the column represents an identity column.

Specified by:
  `isAutoIncrement` in interface `ISQLServerBulkRecord`
Parameters:
  `column` - Column ordinal
Returns:
  True if the column is an identity column; false otherwise.

#### getRowData

    public Object[] getRowData()
                        throws SQLServerException

Description copied from interface: `ISQLServerBulkRecord`
Returns the data for the current row as an array of Objects. Each Object must match the Java language Type that is used to represent the indicated JDBC data type for the given column. For more information, see 'Understanding the JDBC Driver Data Types' for the appropriate mappings.

Specified by:
  `getRowData` in interface `ISQLServerBulkRecord`
Returns:
  The data for the row.
Throws:
  `SQLServerException` - If there are any errors in obtaining the data.

#### setTimestampWithTimezoneFormat

    public void setTimestampWithTimezoneFormat​(String dateTimeFormat)

Description copied from interface: `ISQLServerBulkRecord`
Sets the format for reading in dates from the file.

Specified by:
  `setTimestampWithTimezoneFormat` in interface `ISQLServerBulkRecord`
Parameters:
  `dateTimeFormat` - format to parse data sent as java.sql.Types.TIMESTAMP_WITH_TIMEZONE

#### setTimestampWithTimezoneFormat

    public void setTimestampWithTimezoneFormat​(DateTimeFormatter dateTimeFormatter)

Description copied from interface: `ISQLServerBulkRecord`
Sets the format for reading in dates from the file.

Specified by:
  `setTimestampWithTimezoneFormat` in interface `ISQLServerBulkRecord`
Parameters:
  `dateTimeFormatter` - format to parse data sent as java.sql.Types.TIMESTAMP_WITH_TIMEZONE

#### setTimeWithTimezoneFormat

    public void setTimeWithTimezoneFormat​(String timeFormat)

Description copied from interface: `ISQLServerBulkRecord`
Sets the format for reading in dates from the file.

Specified by:
  `setTimeWithTimezoneFormat` in interface `ISQLServerBulkRecord`
Parameters:
  `timeFormat` - format to parse data sent as java.sql.Types.TIME_WITH_TIMEZONE

#### setTimeWithTimezoneFormat

    public void setTimeWithTimezoneFormat​(DateTimeFormatter dateTimeFormatter)

Description copied from interface: `ISQLServerBulkRecord`
Sets the format for reading in dates from the file.

Specified by:
  `setTimeWithTimezoneFormat` in interface `ISQLServerBulkRecord`
Parameters:
  `dateTimeFormatter` - format to parse data sent as java.sql.Types.TIME_WITH_TIMEZONE

#### next

    public boolean next()
                 throws SQLServerException

Description copied from interface: `ISQLServerBulkRecord`
Advances to the next data row.

Specified by:
  `next` in interface `ISQLServerBulkRecord`
Returns:
  True if rows are available; false if there are no more rows
Throws:
  `SQLServerException` - If there are any errors in advancing to the next row.

#### addColumnMetadata

    public void addColumnMetadata​(int positionInSource,
                                  String name,
                                  int jdbcType,
                                  int precision,
                                  int scale,
                                  DateTimeFormatter dateTimeFormatter)
                           throws SQLServerException

Description copied from interface: `ISQLServerBulkRecord`
Adds metadata for the given column in the file.

Specified by:
  `addColumnMetadata` in interface `ISQLServerBulkRecord`
Parameters:
  `positionInSource` - Indicates which column the metadata is for. Columns start at 1.
  `name` - Name for the column (optional if only using column ordinal in a mapping for SQLServerBulkCopy operation)
  `jdbcType` - JDBC data type of the column
  `precision` - Precision for the column (ignored for the appropriate data types)
  `scale` - Scale for the column (ignored for the appropriate data types)
  `dateTimeFormatter` - format to parse data that is sent
Throws:
  `SQLServerException` - when an error occurs

#### addColumnMetadata

    public void addColumnMetadata​(int positionInSource,
                                  String name,
                                  int jdbcType,
                                  int precision,
                                  int scale)
                           throws SQLServerException

Description copied from interface: `ISQLServerBulkRecord`
Adds metadata for the given column in the file.

Specified by:
  `addColumnMetadata` in interface `ISQLServerBulkRecord`
Parameters:
  `positionInSource` - Indicates which column the metadata is for. Columns start at 1.
  `name` - Name for the column (optional if only using column ordinal in a mapping for SQLServerBulkCopy operation)
  `jdbcType` - JDBC data type of the column
  `precision` - Precision for the column (ignored for the appropriate data types)
  `scale` - Scale for the column (ignored for the appropriate data types)
Throws:
  `SQLServerException` - when an error occurs

#### throwInvalidArgument

    protected void throwInvalidArgument​(String argument)
                                 throws SQLServerException

Throws:
  `SQLServerException`

#### checkDuplicateColumnName

    protected void checkDuplicateColumnName​(int positionInTable,
                                            String colName)
                                     throws SQLServerException

Throws:
  `SQLServerException`