Встречается на собеседованиях • сегодня

Можно ли сохранить PDF в PostgreSQL

Да, можно сохранять PDF в PostgreSQL, используя тип данных bytea (двоичные данные) или BLOB (Large Object).

Пример с bytea:

java
// Чтение PDF в массив байтов
byte[] pdfBytes = Files.readAllBytes(Paths.get("example.pdf"));

// Сохранение в PostgreSQL
String sql = "INSERT INTO documents (name, content) VALUES (?, ?)";
try (PreparedStatement stmt = connection.prepareStatement(sql)) {
    stmt.setString(1, "example.pdf");
    stmt.setBytes(2, pdfBytes);
    stmt.executeUpdate();
}

Для больших файлов лучше использовать Large Object (BLOB):

java
// Открытие Large Object
long oid = connection.unwrap(PGConnection.class).getLargeObjectAPI().createLO();
try (LargeObjectManager lom = connection.unwrap(PGConnection.class).getLargeObjectAPI();
     LargeObject lob = lom.open(oid, LargeObjectManager.WRITE);
     InputStream is = new FileInputStream("example.pdf")) {
    byte[] buffer = new byte[4096];
    int bytesRead;
    while ((bytesRead = is.read(buffer)) != -1) {
        lob.write(buffer, 0, bytesRead);
    }
}

Плюсы bytea: проще в использовании, подходит для небольших файлов.
Плюсы BLOB: эффективнее для больших файлов (>1MB), позволяет потоковую передачу.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы