Java XML для строки для большого файла

-4

У меня есть большие файлы XML более 100 МБ и более. Я использую этот код.

        StringWriter writer = new StringWriter();
DocumentBuilderFactory domFact = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = domFact.newDocumentBuilder();
DOMSource domSource = new DOMSource(document);
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
return writer.toString();

Но это не работает для меня. Я хочу сохранить файл в базе данных как CLOB. Это база данных SQL. Там в любом случае? Как сохранить файл.

спросил(а) 2021-01-19T14:39:47+03:00 2 месяца, 3 недели назад
1
Решение
123

Нет необходимости загружать большой файл в ваше приложение, чтобы просто записать его в базу данных. Пусть РСУБД делает это напрямую (это также быстрее...)

Вы не указали свои РСУБД, просто "SQL Database"...

Если SQL Server такой код должен помочь вам:

DECLARE @yourXML XML=
(
SELECT CONVERT(XML, BulkColumn,2)
FROM OPENROWSET(BULK 'PathToXmlFile.xml', SINGLE_BLOB) AS x
);
SELECT @yourXML;
--And if you really need it as text (=your CLOB) you just convert it once again:
SELECT CONVERT(VARCHAR(MAX),@yourXML) AS YourText

Вы можете создать хранимую процедуру вокруг этого и вызвать его из своего приложения.

ответил(а) 2021-01-19T14:39:47+03:00 2 месяца, 3 недели назад
44

Если вы используете PreparedStatement (и вы должны быть...), вы можете использовать метод setClob.

// assuming document is a File, or a string containing a filename
st.setClob(index, new FileReader(document));

Если document - это нечто иное, чем File, то если вы можете открыть его как InputStream вы можете вместо этого использовать InputStreamReader.

ответил(а) 2021-01-19T14:39:47+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема