Я пишу метод, который получает разделенный запятыми текстовый файл в виде InputStream через веб-сервис. Я создал свою таблицу, используя следующий сценарий SQL:
CREATE SEQUENCE FILE_NUMBER_SEQ
INCREMENT BY 1
START WITH 1
MINVALUE 1
NOMAXVALUE;
CREATE TABLE FILES
(
ID NUMBER NOT NULL ,
FILE CLOB NOT NULL
);
В моем модульном тесте я использую следующий код для генерации CSV. Я не могу создать файл b / c с правами администратора на машине, на которой может выполняться тест:
String simulatedCSVFile = new String("col1,col2\\ndata1,data2");
InputStream stream = new ByteArrayInputStream(
simulatedCSVFile.getBytes("UTF-8"));
Мой метод в настоящее время выглядит так:
public void uploadCSVFile(InputStream stream) {
try {
Connection conn = null;
PreparedStatement preparedStmt = null;
conn = db.getDataSource().getConnection();
conn.setAutoCommit(false);
String sql = "INSERT INTO FILES(ID,FILE) VALUES(FILE_NUMBER_SEQ.NEXTVAL,?)";
preparedStmt = conn.prepareStatement(sql);
preparedStmt.setAsciiStream(1, stream);
int count = preparedStmt.executeUpdate();
}
}
Когда я выполняю метод, чтобы проверить его, я получаю исключение, которое гласит «Полезная нагрузка сообщения имеет тип: jetty.HttpParser», когда вызывается setAsciiStream.
Есть идеи, как преобразовать поток, чтобы он мог быть добавлен в SQL для CLOB?