I don't know about the API in Java, but when I try your sample data with:
CREATE TABLE #four(a nvarchar(20), b nvarchar(20), cv nvarchar(20), d nvarchar(20))
BULK INSERT #four FROM 'C:\temp\slask.bcp'
WITH (FORMAT = 'CSV', FIELDTERMINATOR=';', DATAFILETYPE = 'widechar')
SELECT * FROM #four
go
DROP TABLE #four
I get the error message:
Msg 4879, Level 16, State 1, Line 7 Bulk load failed due to invalid column value in CSV data file C:\temp\slask.bcp in row 1, column 3.
This is due to that this is not a legal CSV file where double quotes are used to quote data, and cannot appear in the data itself.
However with BULK INSERT you can specify an alternate quote character with the FIELDQUOTE option:
BULK INSERT #four FROM 'C:\temp\slask.bcp'
WITH (FORMAT = 'CSV', FIELDTERMINATOR=';', DATAFILETYPE = 'widechar', FIELDQUOTE = '?')
With this command, the file loads.
So you need to check the documentation for SQLServerBulkCSVFileRecord to see if it exposes a similar option.