Я столкнулся с некоторыми проблемами, пытающимися сопоставить мои метаданные столбца с API-интерфейсом SQL Server Bulk Copy и SQLServerBulkCSVFileRecord
. Только для целей тестирования я создал таблицу, состоящую только nvarchar(500)
столбцов и добавить метаданные, как это:Как использовать API избыточного копирования JDBC SQL Server
fileRecord = new SQLServerBulkCSVFileRecord(csvPath, false);
for(int i=1; i<=colCount; i++) {
fileRecord.addColumnMetadata(i, null, java.sql.Types.NVARCHAR, 500, 0);
}
я получаю следующее StackTrace после использования Microsoft SQL массового копирования API с помощью JDBC и я не могу найти никакой документации на SQLServerBulkCSVFileRecord
. Я не знаю, каковы параметры в addColumnMetaData
: Я просто предположил, глядя на пример this, что первый параметр обозначает индекс столбца, а затем, очевидно, третий для типа данных, четвертый - байт столбца (?) ,
com.microsoft.sqlserver.jdbc.SQLServerException: Unicode data is odd byte size for column 1. Should be even byte size.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:217)
at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:251)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:81)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:36)
at com.microsoft.sqlserver.jdbc.SQLServerBulkCopy.doInsertBulk(SQLServerBulkCopy.java:1433)
at com.microsoft.sqlserver.jdbc.SQLServerBulkCopy.access$200(SQLServerBulkCopy.java:41)
at com.microsoft.sqlserver.jdbc.SQLServerBulkCopy$1InsertBulk.doExecute(SQLServerBulkCopy.java:666)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:6276)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1793)
at com.microsoft.sqlserver.jdbc.SQLServerBulkCopy.sendBulkLoadBCP(SQLServerBulkCopy.java:699)
at com.microsoft.sqlserver.jdbc.SQLServerBulkCopy.writeToServer(SQLServerBulkCopy.java:1516)
at com.microsoft.sqlserver.jdbc.SQLServerBulkCopy.writeToServer(SQLServerBulkCopy.java:616)
Я читал, что пустые строки, не CRLF окончание строк, кодирование и т.д. могут оказать влияние, но я чувствую, что я исчерпал эти варианты.
Наконец вот немного пример моего файла CSV:
column1|test|1|testtest|test3
column2|test|2|testt46426est|test346
column3|test|3|test4test|test3426234
Спасибо, что было на самом деле. Мне немного стыдно забывать о разделителе. Вы случайно не знаете, есть ли более подробная документация по этому API в другом месте? –
Этот документ является единственной ссылкой, которую я нашел до сих пор. –